discovery

package
v0.0.0-...-95b87ed Latest Latest
Warning

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

Go to latest
Published: Sep 16, 2019 License: Apache-2.0 Imports: 13 Imported by: 0

Documentation

Index

Constants

View Source
const DefAliveExpirationCheckInterval = DefAliveExpirationTimeout / 10
View Source
const DefAliveExpirationTimeout = 5 * DefAliveTimeInterval
View Source
const DefAliveTimeInterval = 5 * time.Second
View Source
const DefReconnectInterval = DefAliveExpirationTimeout

Variables

This section is empty.

Functions

func HasExternalEndpoint

func HasExternalEndpoint(member NetworkMember) bool

func SetMaxConnAttempts

func SetMaxConnAttempts(attempts int)

Types

type CommService

type CommService interface {
	Gossip(msg *protoext.SignedGossipMessage)

	SendToPeer(peer *NetworkMember, msg *protoext.SignedGossipMessage)

	Ping(peer *NetworkMember) bool

	Accept() <-chan protoext.ReceivedMessage

	PresumedDead() <-chan common.PKIidType

	CloseConn(peer *NetworkMember)

	Forward(msg protoext.ReceivedMessage)
}

type CryptoService

type CryptoService interface {
	ValidateAliveMsg(message *protoext.SignedGossipMessage) bool

	SignMessage(m *proto.GossipMessage, internalEndpoint string) *proto.Envelope
}

type DisclosurePolicy

type DisclosurePolicy func(remotePeer *NetworkMember) (Sieve, EnvelopeFilter)

type Discovery

type Discovery interface {
	Lookup(PKIID common.PKIidType) *NetworkMember

	Self() NetworkMember

	UpdateMetadata([]byte)

	UpdateEndpoint(string)

	Stop()

	GetMembership() []NetworkMember

	InitiateSync(peerNum int)

	Connect(member NetworkMember, id identifier)
}

func NewDiscoveryService

func NewDiscoveryService(self NetworkMember, comm CommService, crypt CryptoService, disPol DisclosurePolicy,
	config DiscoveryConfig) Discovery

type DiscoveryConfig

type DiscoveryConfig struct {
	AliveTimeInterval            time.Duration
	AliveExpirationTimeout       time.Duration
	AliveExpirationCheckInterval time.Duration
	ReconnectInterval            time.Duration
	BootstrapPeers               []string
}

type EnvelopeFilter

type EnvelopeFilter func(message *protoext.SignedGossipMessage) *proto.Envelope

type Members

type Members []NetworkMember

func (Members) ByID

func (members Members) ByID() map[string]NetworkMember

func (Members) Filter

func (members Members) Filter(filter func(member NetworkMember) bool) Members

func (Members) Intersect

func (members Members) Intersect(otherMembers Members) Members

func (Members) Map

func (members Members) Map(f func(member NetworkMember) NetworkMember) Members

type NetworkMember

type NetworkMember struct {
	Endpoint         string
	Metadata         []byte
	PKIid            common.PKIidType
	InternalEndpoint string
	Properties       *proto.Properties
	*proto.Envelope
}

func (NetworkMember) PreferredEndpoint

func (n NetworkMember) PreferredEndpoint() string

func (NetworkMember) String

func (n NetworkMember) String() string

type PeerIdentification

type PeerIdentification struct {
	ID      common.PKIidType
	SelfOrg bool
}

type Sieve

type Sieve func(message *protoext.SignedGossipMessage) bool

Jump to

Keyboard shortcuts

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