Documentation ¶
Overview ¶
Package protocol provides the common functionality for mini-protocols
Index ¶
Constants ¶
This section is empty.
Variables ¶
var ProtocolShuttingDownError = fmt.Errorf("protocol is shutting down")
Functions ¶
This section is empty.
Types ¶
type MessageBase ¶
type MessageBase struct { MessageType uint8 // contains filtered or unexported fields }
MessageBase is the minimum implementation for a mini-protocol message
func (*MessageBase) Cbor ¶
func (m *MessageBase) Cbor() []byte
Cbor returns the original CBOR that was parsed
func (*MessageBase) SetCbor ¶
func (m *MessageBase) SetCbor(data []byte)
SetCbor stores the original CBOR that was parsed
type MessageFromCborFunc ¶
MessageFromCborFunc represents a function that parses a mini-protocol message
type MessageHandlerFunc ¶
MessageHandlerFunc represents a function that handles an incoming message
type Protocol ¶
type Protocol struct {
// contains filtered or unexported fields
}
Protocol implements the base functionality of an Ouroboros mini-protocol
func (*Protocol) SendMessage ¶
SendMessage appends a message to the send queue
type ProtocolConfig ¶
type ProtocolConfig struct { Name string ProtocolId uint16 ErrorChan chan error Muxer *muxer.Muxer Mode ProtocolMode Role ProtocolRole MessageHandlerFunc MessageHandlerFunc MessageFromCborFunc MessageFromCborFunc StateMap StateMap InitialState State }
ProtocolConfig provides the configuration for Protocol
type ProtocolMode ¶
type ProtocolMode uint
ProtocolMode is an enum of the protocol modes
const ( ProtocolModeNone ProtocolMode = 0 // Default (invalid) protocol mode ProtocolModeNodeToClient ProtocolMode = 1 // Node-to-client protocol mode ProtocolModeNodeToNode ProtocolMode = 2 // Node-to-node protocol mode )
type ProtocolOptions ¶
type ProtocolOptions struct { Muxer *muxer.Muxer ErrorChan chan error Mode ProtocolMode // TODO: remove me Role ProtocolRole Version uint16 }
ProtocolOptions provides common arguments for all mini-protocols
type ProtocolRole ¶
type ProtocolRole uint
ProtocolRole is an enum of the protocol roles
const ( ProtocolRoleNone ProtocolRole = 0 // Default (invalid) protocol role ProtocolRoleClient ProtocolRole = 1 // Client protocol role ProtocolRoleServer ProtocolRole = 2 // Server protocol role )
Protocol roles
type ProtocolStateAgency ¶
type ProtocolStateAgency uint
ProtocolStateAgency is an enum representing the possible protocol state agency values
const ( AgencyNone ProtocolStateAgency = 0 // Default (invalid) value AgencyClient ProtocolStateAgency = 1 // Client agency AgencyServer ProtocolStateAgency = 2 // Server agency )
type State ¶
State represents protocol state with both a numeric ID and a string identifer
type StateMap ¶
type StateMap map[State]StateMapEntry
StateMap represents the state machine definition for a mini-protocol
type StateMapEntry ¶
type StateMapEntry struct { Agency ProtocolStateAgency Transitions []StateTransition Timeout time.Duration }
StateMapEntry represents a protocol state, it's possible state transitions, and an optional timeout
type StateTransition ¶
type StateTransition struct { MsgType uint8 NewState State MatchFunc StateTransitionMatchFunc }
StateTransition represents a protocol state transition
type StateTransitionMatchFunc ¶
StateTransitionMatchFunc represents a function that will take a Message and return a bool that indicates whether the message is a match for the state transition rule
Directories ¶
Path | Synopsis |
---|---|
Package chainsync implements the Ouroboros chain-sync protocol
|
Package chainsync implements the Ouroboros chain-sync protocol |
The common package contains types used by multiple mini-protocols
|
The common package contains types used by multiple mini-protocols |
Package handshake implements the Ouroboros handshake protocol
|
Package handshake implements the Ouroboros handshake protocol |
Package localstatequery implements the Ouroboros local-state-query protocol
|
Package localstatequery implements the Ouroboros local-state-query protocol |
Package localtxmonitor implements the Ouroboros local-tx-monitor protocol
|
Package localtxmonitor implements the Ouroboros local-tx-monitor protocol |
Package localtxsubmission implements the Ouroboros local-tx-submission protocol
|
Package localtxsubmission implements the Ouroboros local-tx-submission protocol |
Package handshake implements the Ouroboros handshake protocol
|
Package handshake implements the Ouroboros handshake protocol |