engine

package
v0.1.2 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Oct 9, 2023 License: Apache-2.0, MIT Imports: 21 Imported by: 0

Documentation

Overview

Package engine contains the types and imperative code for the business logic of a go-nitro Node.

Index

Constants

View Source
const (
	Incoming messageDirection = "Incoming"
	Outgoing messageDirection = "Outgoing"
)

Variables

This section is empty.

Functions

This section is empty.

Types

type CompletedObjectiveEvent

type CompletedObjectiveEvent struct {
	Id protocols.ObjectiveId
}

type Engine

type Engine struct {

	// From API
	ObjectiveRequestsFromAPI chan protocols.ObjectiveRequest
	PaymentRequestsFromAPI   chan PaymentRequest
	// contains filtered or unexported fields
}

Engine is the imperative part of the core business logic of a go-nitro Node

func New

func New(vm *payments.VoucherManager, msg messageservice.MessageService, chain chainservice.ChainService, store store.Store, policymaker PolicyMaker, eventHandler func(EngineEvent)) Engine

NewEngine is the constructor for an Engine

func (*Engine) Close

func (e *Engine) Close() error

func (*Engine) GetConsensusAppAddress

func (e *Engine) GetConsensusAppAddress() types.Address

GetConsensusAppAddress returns the address of a deployed ConsensusApp (for ledger channels)

func (*Engine) GetVirtualPaymentAppAddress

func (e *Engine) GetVirtualPaymentAppAddress() types.Address

GetVirtualPaymentAppAddress returns the address of a deployed VirtualPaymentApp

type EngineEvent

type EngineEvent struct {
	// These are objectives that are now completed
	CompletedObjectives []protocols.Objective
	// These are objectives that have failed
	FailedObjectives []protocols.ObjectiveId
	// ReceivedVouchers are vouchers we've received from other participants
	ReceivedVouchers []payments.Voucher

	// LedgerChannelUpdates contains channel info for ledger channels that have been updated
	LedgerChannelUpdates []query.LedgerChannelInfo
	// PaymentChannelUpdates contains channel info for payment channels that have been updated
	PaymentChannelUpdates []query.PaymentChannelInfo
}

EngineEvent is a struct that contains a list of changes caused by handling a message/chain event/api event

func (*EngineEvent) IsEmpty

func (ee *EngineEvent) IsEmpty() bool

IsEmpty returns true if the EngineEvent contains no changes

func (*EngineEvent) Merge

func (ee *EngineEvent) Merge(other EngineEvent)

type ErrGetObjective

type ErrGetObjective struct {
	// contains filtered or unexported fields
}

func (*ErrGetObjective) Error

func (e *ErrGetObjective) Error() string

type ErrUnhandledChainEvent

type ErrUnhandledChainEvent struct {
	// contains filtered or unexported fields
}

ErrUnhandledChainEvent is an engine error when the the engine cannot process a chain event

func (*ErrUnhandledChainEvent) Error

func (uce *ErrUnhandledChainEvent) Error() string

type PaymentRequest

type PaymentRequest struct {
	ChannelId types.Destination
	Amount    *big.Int
}

PaymentRequest represents a request from the API to make a payment using a channel

type PermissivePolicy

type PermissivePolicy struct{}

PermissivePolicy is a policy maker that decides to approve every unapproved objective

func (*PermissivePolicy) ShouldApprove

func (pp *PermissivePolicy) ShouldApprove(o protocols.Objective) bool

ShouldApprove decides to approve o if it is currently unapproved

type PolicyMaker

type PolicyMaker interface {
	ShouldApprove(o protocols.Objective) bool
}

PolicyMaker is used to decide whether to approve or reject an objective

type Response

type Response struct{}

Response is the return type that asynchronous API calls "resolve to". Such a call returns a go channel of type Response.

Directories

Path Synopsis
Package chainservice is a chain service responsible for submitting blockchain transactions and relaying blockchain events.
Package chainservice is a chain service responsible for submitting blockchain transactions and relaying blockchain events.
adjudicator
package NitroAdjudicator contains bindings generated from the Nitro Adjudicator solidity contract, as well as utilities for converting client types to on-chain types.
package NitroAdjudicator contains bindings generated from the Nitro Adjudicator solidity contract, as well as utilities for converting client types to on-chain types.
Package messageservice is a messaging service responsible for routing messages to peers and relaying messages received from peers.
Package messageservice is a messaging service responsible for routing messages to peers and relaying messages received from peers.
Package store contains the interface for a go-nitro store.
Package store contains the interface for a go-nitro store.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL