pull

package
v1.0.0-alpha Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Mar 15, 2017 License: Apache-2.0 Imports: 9 Imported by: 0

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 Mediator

type Mediator interface {
	// Stop stop the Mediator
	Stop()

	// RegisterMsgHook registers a message hook to a specific type of pull message
	RegisterMsgHook(PullMsgType, MessageHook)

	// Add adds a GossipMessage to the Mediator
	Add(*proto.SignedGossipMessage)

	// Remove removes a GossipMessage from the Mediator
	Remove(*proto.SignedGossipMessage)

	// 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 PullConfig, sndr Sender, memSvc MembershipService, idExtractor proto.IdentifierExtractor, msgCons proto.MsgConsumer) 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 PullConfig

type PullConfig struct {
	ID                string
	PullInterval      time.Duration // Duration between pull invocations
	PeerCountToSelect int           // Number of peers to initiate pull with
	Tag               proto.GossipMessage_Tag
	Channel           common.ChainID
	MsgType           proto.PullMsgType
}

PullConfig defines the configuration of the pull mediator

type PullMsgType

type PullMsgType int

PullMsgType defines the type of a message that is sent to the PullStore

const (
	HelloMsgType PullMsgType = iota
	DigestMsgType
	RequestMsgType
	ResponseMsgType
)

Constants go here.

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

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL