Documentation
¶
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func SelectEndpoints ¶
func SelectEndpoints(k int, peerPool []discovery.NetworkMember) []*comm.RemotePeer
SelectEndpoints select k peers from peerPool and returns them.
Types ¶
type Config ¶
type Config struct {
ID string
PullInterval time.Duration // Duration between pull invocations
Channel common.ChainID
PeerCountToSelect int // Number of peers to initiate pull with
Tag proto.GossipMessage_Tag
MsgType proto.PullMsgType
}
Config defines the configuration of the pull mediator
type DigestFilter ¶
type DigestFilter func(helloMsg proto.ReceivedMessage) func(digestItem string) bool
DigestFilter filters digests to be sent to a remote peer, that sent a hello with the following message
type Mediator ¶
type Mediator interface {
// Stop stop the Mediator
Stop()
// RegisterMsgHook registers a message hook to a specific type of pull message
RegisterMsgHook(MsgType, MessageHook)
// Add adds a GossipMessage to the Mediator
Add(*proto.SignedGossipMessage)
// Remove removes a GossipMessage from the Mediator with a matching digest,
// if such a message exits
Remove(digest string)
// HandleMessage handles a message from some remote peer
HandleMessage(msg proto.ReceivedMessage)
}
Mediator is a component wrap a PullEngine and provides the methods it needs to perform pull synchronization. The specialization of a pull mediator to a certain type of message is done by the configuration, a IdentifierExtractor, IdentifierExtractor given at construction, and also hooks that can be registered for each type of pullMsgType (hello, digest, req, res).
func NewPullMediator ¶
func NewPullMediator(config Config, adapter *PullAdapter) Mediator
NewPullMediator returns a new Mediator
type MembershipService ¶
type MembershipService interface {
// GetMembership returns the membership of
GetMembership() []discovery.NetworkMember
}
MembershipService obtains membership information of alive peers
type MessageHook ¶
type MessageHook func(itemIDs []string, items []*proto.SignedGossipMessage, msg proto.ReceivedMessage)
MessageHook defines a function that will run after a certain pull message is received
type PullAdapter ¶
type PullAdapter struct {
Sndr Sender
MemSvc MembershipService
IdExtractor proto.IdentifierExtractor
MsgCons proto.MsgConsumer
DigFilter DigestFilter
}
PullAdapter defines methods of the pullStore to interact with various modules of gossip
type Sender ¶
type Sender interface {
// Send sends a message to a list of remote peers
Send(msg *proto.SignedGossipMessage, peers ...*comm.RemotePeer)
}
Sender sends messages to remote peers
Source Files
¶
- pullstore.go