Documentation ¶
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type Builder ¶
type Builder interface { GetVersion() (Message, error) Version( networkID, nodeID uint32, myTime uint64, ip utils.IPDesc, myVersion string, myVersionTime uint64, sig []byte, ) (Message, error) GetPeerList() (Message, error) PeerList( peers []utils.IPCertDesc, includeIsCompressedFlag, compress bool, ) (Message, error) Ping() (Message, error) Pong() (Message, error) GetAcceptedFrontier( chainID ids.ID, requestID uint32, deadline uint64, ) (Message, error) AcceptedFrontier( chainID ids.ID, requestID uint32, containerIDs []ids.ID, ) (Message, error) GetAccepted( chainID ids.ID, requestID uint32, deadline uint64, containerIDs []ids.ID, ) (Message, error) Accepted( chainID ids.ID, requestID uint32, containerIDs []ids.ID, ) (Message, error) GetAncestors( chainID ids.ID, requestID uint32, deadline uint64, containerID ids.ID, ) (Message, error) MultiPut( chainID ids.ID, requestID uint32, containers [][]byte, includeIsCompressedFlag bool, compressed bool, ) (Message, error) Get( chainID ids.ID, requestID uint32, deadline uint64, containerID ids.ID, ) (Message, error) Put( chainID ids.ID, requestID uint32, containerID ids.ID, container []byte, includeIsCompressedFlag bool, compress bool, ) (Message, error) PushQuery( chainID ids.ID, requestID uint32, deadline uint64, containerID ids.ID, container []byte, includeIsCompressedFlag bool, compress bool, ) (Message, error) PullQuery( chainID ids.ID, requestID uint32, deadline uint64, containerID ids.ID, ) (Message, error) Chits( chainID ids.ID, requestID uint32, containerIDs []ids.ID, ) (Message, error) }
func NewBuilder ¶
type Codec ¶
type Codec interface { Pack( op Op, fieldValues map[Field]interface{}, includeIsCompressedFlag bool, compress bool, ) (Message, error) Parse(bytes []byte, parseIsCompressedFlag bool) (Message, error) }
func NewCodec ¶
func NewCodec(namespace string, metrics prometheus.Registerer, maxMessageSize int64) (Codec, error)
func NewCodecWithAllocator ¶
func NewCodecWithAllocator(namespace string, metrics prometheus.Registerer, getBytes func() []byte, maxMessageSize int64) (Codec, error)
type Field ¶
type Field uint32
Field that may be packed into a message
const ( VersionStr Field = iota // Used in handshake NetworkID // Used in handshake NodeID // Used in handshake MyTime // Used in handshake IP // Used in handshake Peers // Used in handshake ChainID // Used for dispatching RequestID // Used for all messages Deadline // Used for request messages ContainerID // Used for querying ContainerBytes // Used for gossiping ContainerIDs // Used for querying MultiContainerBytes // Used in MultiPut SigBytes // Used in handshake / peer gossiping VersionTime // Used in handshake / peer gossiping SignedPeers // Used in peer gossiping )
Fields that may be packed. These values are not sent over the wire.
type Message ¶
type Message interface { Op() Op Get(Field) interface{} Bytes() []byte BytesSavedCompression() int }
Message represents a set of fields that can be serialized into a byte stream
type Op ¶
type Op byte
Op is an opcode
const ( // Handshake: GetVersion Op = iota GetPeerList Ping Pong // Bootstrapping: GetAcceptedFrontier AcceptedFrontier GetAccepted Accepted GetAncestors MultiPut // Consensus: Get Put PushQuery PullQuery Chits // Handshake / peer gossiping Version PeerList )
Types of messages that may be sent between nodes Note: If you add a new Op below, you must also add it to ops (declared below)
func (Op) Compressable ¶
Click to show internal directories.
Click to hide internal directories.