Documentation ¶
Index ¶
- type Data
- type DataBytes
- type DataMsgWrapper
- type DirectMessage
- type GossipMessage
- type MessageValidation
- type Node
- func (sn *Node) Broadcast(protocol string, payload []byte) error
- func (sn *Node) ProcessDirectProtocolMessage(sender p2pcrypto.PublicKey, protocol string, payload Data, ...) error
- func (sn *Node) ProcessGossipProtocolMessage(sender p2pcrypto.PublicKey, protocol string, data Data, ...) error
- func (sn *Node) RegisterDirectProtocol(protocol string) chan DirectMessage
- func (sn *Node) RegisterDirectProtocolWithChannel(protocol string, ingressChannel chan DirectMessage) chan DirectMessage
- func (sn *Node) RegisterGossipProtocol(protocol string, prio priorityq.Priority) chan GossipMessage
- func (sn *Node) SendMessage(peerPubkey p2pcrypto.PublicKey, protocol string, payload []byte) error
- func (sn *Node) SendWrappedMessage(nodeID p2pcrypto.PublicKey, protocol string, payload *DataMsgWrapper) error
- func (sn *Node) Shutdown()
- func (sn *Node) Start() error
- func (sn *Node) SubscribePeerEvents() (conn chan p2pcrypto.PublicKey, disc chan p2pcrypto.PublicKey)
- type P2PMetadata
- type Service
- type Simulator
- func (s *Simulator) NewFaulty(isRandBehaviour bool, maxBroadcastDelaySec uint32, maxReceiveDelaySec uint32) *Node
- func (s *Simulator) NewNode() *Node
- func (s *Simulator) NewNodeFrom(n *node.NodeInfo) *Node
- func (s *Simulator) SubscribeToPeerEvents(myid p2pcrypto.Key) (chan p2pcrypto.PublicKey, chan p2pcrypto.PublicKey)
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type DataMsgWrapper ¶
func (DataMsgWrapper) Bytes ¶
func (m DataMsgWrapper) Bytes() []byte
type DirectMessage ¶
type DirectMessage interface { Metadata() P2PMetadata Sender() p2pcrypto.PublicKey Bytes() []byte }
DirectMessage is an interface that represents a simple direct message structure
type GossipMessage ¶
type GossipMessage interface { Sender() p2pcrypto.PublicKey Bytes() []byte ValidationCompletedChan() chan MessageValidation ReportValidation(protocol string) }
GossipMessage is an interface that represents a simple gossip message structure
type MessageValidation ¶
type MessageValidation struct {
// contains filtered or unexported fields
}
func NewMessageValidation ¶
func NewMessageValidation(sender p2pcrypto.PublicKey, msg []byte, prot string) MessageValidation
func (MessageValidation) Message ¶
func (mv MessageValidation) Message() []byte
func (MessageValidation) Protocol ¶
func (mv MessageValidation) Protocol() string
func (MessageValidation) Sender ¶
func (mv MessageValidation) Sender() p2pcrypto.PublicKey
type Node ¶
Node is a simulated p2p node that can be used as a p2p service
func (*Node) ProcessDirectProtocolMessage ¶
func (sn *Node) ProcessDirectProtocolMessage(sender p2pcrypto.PublicKey, protocol string, payload Data, metadata P2PMetadata) error
ProcessDirectProtocolMessage
func (*Node) ProcessGossipProtocolMessage ¶
func (sn *Node) ProcessGossipProtocolMessage(sender p2pcrypto.PublicKey, protocol string, data Data, validationCompletedChan chan MessageValidation) error
ProcessGossipProtocolMessage
func (*Node) RegisterDirectProtocol ¶
func (sn *Node) RegisterDirectProtocol(protocol string) chan DirectMessage
RegisterDirectProtocol creates and returns a channel for a given direct based protocol.
func (*Node) RegisterDirectProtocolWithChannel ¶
func (sn *Node) RegisterDirectProtocolWithChannel(protocol string, ingressChannel chan DirectMessage) chan DirectMessage
RegisterProtocolWithChannel configures and returns a channel for a given protocol.
func (*Node) RegisterGossipProtocol ¶
func (sn *Node) RegisterGossipProtocol(protocol string, prio priorityq.Priority) chan GossipMessage
RegisterGossipProtocol creates and returns a channel for a given gossip based protocol.
func (*Node) SendMessage ¶
func (*Node) SendWrappedMessage ¶
type P2PMetadata ¶
Metadata is a generic metadata interface
type Service ¶
type Service interface { Start() error RegisterGossipProtocol(protocol string, prio priorityq.Priority) chan GossipMessage RegisterDirectProtocol(protocol string) chan DirectMessage SubscribePeerEvents() (new chan p2pcrypto.PublicKey, del chan p2pcrypto.PublicKey) Broadcast(protocol string, payload []byte) error Shutdown() }
Service is an interface that represents a networking service (ideally p2p) that we can use to send messages or listen to incoming messages
type Simulator ¶
Simulator is a p2p node factory and message bridge
func NewSimulator ¶
func NewSimulator() *Simulator
New Creates a p2p simulation by providing nodes as p2p services and bridge them.
func (*Simulator) NewNodeFrom ¶
NewNodeFrom creates a new node from existing details