election

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: 11 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func SetLeaderAliveThreshold

func SetLeaderAliveThreshold(t time.Duration)

func SetLeaderElectionDuration

func SetLeaderElectionDuration(t time.Duration)

func SetMembershipSampleInterval

func SetMembershipSampleInterval(t time.Duration)

func SetStartupGracePeriod

func SetStartupGracePeriod(t time.Duration)

Types

type LeaderElectionAdapter

type LeaderElectionAdapter interface {

	// Gossip gossips a message to other peers
	Gossip(Msg)

	// Accept returns a channel that emits messages
	Accept() <-chan Msg

	// CreateProposalMessage
	CreateMessage(isDeclaration bool) Msg

	// Peers returns a list of peers considered alive
	Peers() []Peer
}

LeaderElectionAdapter is used by the leader election module to send and receive messages and to get membership information

func NewAdapter

func NewAdapter(gossip gossip, pkiid common.PKIidType, channel common.ChainID) LeaderElectionAdapter

NewAdapter creates new leader election adapter

type LeaderElectionService

type LeaderElectionService interface {
	// IsLeader returns whether this peer is a leader or not
	IsLeader() bool

	// Stop stops the LeaderElectionService
	Stop()
}

LeaderElectionService is the object that runs the leader election algorithm

func NewLeaderElectionService

func NewLeaderElectionService(adapter LeaderElectionAdapter, id string, callback leadershipCallback) LeaderElectionService

NewLeaderElectionService returns a new LeaderElectionService

type Msg

type Msg interface {
	// SenderID returns the ID of the peer sent the message
	SenderID() peerID
	// IsProposal returns whether this message is a leadership proposal
	IsProposal() bool
	// IsDeclaration returns whether this message is a leadership declaration
	IsDeclaration() bool
}

Msg describes a message sent from a remote peer

type Peer

type Peer interface {
	// ID returns the ID of the peer
	ID() peerID
}

Peer describes a remote peer

Jump to

Keyboard shortcuts

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