Documentation
¶
Overview ¶
(c) 2019 Dapper Labs - ALL RIGHTS RESERVED
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func AllPeerUnreachableError ¶
AllPeerUnreachableError returns whether all errors are PeerUnreachableError
func IsPeerUnreachableError ¶
IsPeerUnreachableError returns whether the given error is PeerUnreachableError
func NewPeerUnreachableError ¶
NewPeerUnreachableError creates a PeerUnreachableError instance with an error
Types ¶
type Codec ¶
type Codec interface {
NewEncoder(w io.Writer) Encoder
NewDecoder(r io.Reader) Decoder
Encode(v interface{}) ([]byte, error)
Decode(data []byte) (interface{}, error)
}
Codec provides factory functions for encoders and decoders.
type Conduit ¶
type Conduit interface {
// Submit will submit an event to the network layer. The network layer will
// ensure that the event is delivered to the same engine on the desired target
// nodes. It's possible that the event traverses other nodes than the target
// nodes on its path across the network. The network codec needs to be aware
// of how to encode the given event type, otherwise the send will fail.
//
// Note: Submit method is planned for deprecation soon.
// Alternative methods are recommended, e.g., Publish, Unicast, and Multicast.
Submit(event interface{}, targetIDs ...flow.Identifier) error
// Publish submits an event to the network layer for unreliable delivery
// to subscribers of the given event on the network layer. It uses a
// publish-subscribe layer and can thus not guarantee that the specified
// recipients received the event.
// The event is published on the channel ID of this Conduit and will be received
// by the nodes specified as part of the targetIDs
Publish(event interface{}, targetIDs ...flow.Identifier) error
// Unicast sends the event in a reliable way to the given recipient.
// It uses 1-1 direct messaging over the underlying network to deliver the event.
// It returns an error if the unicast fails.
Unicast(event interface{}, targetID flow.Identifier) error
// Multicast unreliably sends the specified event over the channelID
// to the specified number of recipients selected from the specified subset.
// The recipients are selected randomly from the targetIDs.
Multicast(event interface{}, num uint, targetIDs ...flow.Identifier) error
// Close unsubscribes from the channel ID of this conduit. After calling close,
// the conduit can no longer be used to send a message.
Close() error
}
Conduit represents the interface for engines to communicate over the peer-to-peer network. Upon registration with the network, each engine is assigned a conduit, which it can use to communicate across the network in a network-agnostic way. In the background, the network layer connects all engines with the same ID over a shared bus, accessible through the conduit.
type Decoder ¶
type Decoder interface {
Decode() (interface{}, error)
}
Decoder decodes from the underlying reader into the given message.
type Encoder ¶
type Encoder interface {
Encode(v interface{}) error
}
Encoder encodes the given message into the underlying writer.
type Engine ¶
type Engine interface {
// SubmitLocal submits an event originating on the local node.
SubmitLocal(event interface{})
// Submit submits the given event from the node with the given origin ID
// for processing in a non-blocking manner. It returns instantly and logs
// a potential processing error internally when done.
Submit(originID flow.Identifier, event interface{})
// ProcessLocal processes an event originating on the local node.
ProcessLocal(event interface{}) error
// Process processes the given event from the node with the given origin ID
// in a blocking manner. It returns the potential processing error when
// done.
Process(originID flow.Identifier, event interface{}) error
}
Engine represents an isolated process running across the peer-to-peer network as part of the node business logic. It provides the network layer with the necessary interface to forward events to engines for processing.
type PeerUnreachableError ¶
type PeerUnreachableError struct {
Err error
}
PeerUnreachableError is the error when submitting events to target fails due to the target peer is unreachable
func (PeerUnreachableError) Error ¶
func (e PeerUnreachableError) Error() string
func (PeerUnreachableError) Unwrap ¶
func (e PeerUnreachableError) Unwrap() error
Unwrap returns the wrapped error value