Documentation
¶
Index ¶
- func SetAliveExpirationCheckInterval(interval time.Duration)
- func SetAliveExpirationTimeout(timeout time.Duration)
- func SetAliveTimeInterval(interval time.Duration)
- func SetMaxConnAttempts(attempts int)
- func SetReconnectInterval(interval time.Duration)
- type CommService
- type CryptoService
- type DisclosurePolicy
- type Discovery
- type EnvelopeFilter
- type NetworkMember
- type PeerIdentification
- type Sieve
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func SetAliveExpirationCheckInterval ¶
SetAliveExpirationCheckInterval sets the expiration check interval
func SetAliveExpirationTimeout ¶
SetAliveExpirationTimeout sets the expiration timeout
func SetAliveTimeInterval ¶
SetAliveTimeInterval sets the alive time interval
Types ¶
type CommService ¶
type CommService interface {
// Gossip gossips a message
Gossip(msg *proto.SignedGossipMessage)
// SendToPeer sends to a given peer a message.
// The nonce can be anything since the communication module handles the nonce itself
SendToPeer(peer *NetworkMember, msg *proto.SignedGossipMessage)
// Ping probes a remote peer and returns if it's responsive or not
Ping(peer *NetworkMember) bool
// Accept returns a read-only channel for membership messages sent from remote peers
Accept() <-chan *proto.SignedGossipMessage
// PresumedDead returns a read-only channel for peers that are presumed to be dead
PresumedDead() <-chan common.PKIidType
// CloseConn orders to close the connection with a certain peer
CloseConn(peer *NetworkMember)
}
CommService is an interface that the discovery expects to be implemented and passed on creation
type CryptoService ¶
type CryptoService interface {
// ValidateAliveMsg validates that an Alive message is authentic
ValidateAliveMsg(message *proto.SignedGossipMessage) bool
// SignMessage signs a message
SignMessage(m *proto.GossipMessage, internalEndpoint string) *proto.Envelope
}
CryptoService is an interface that the discovery expects to be implemented and passed on creation
type DisclosurePolicy ¶
type DisclosurePolicy func(remotePeer *NetworkMember) (Sieve, EnvelopeFilter)
DisclosurePolicy defines which messages a given remote peer is eligible of knowing about, and also what is it eligible to know about out of a given SignedGossipMessage. Returns:
- A Sieve for a given remote peer. The Sieve is applied for each peer in question and outputs whether the message should be disclosed to the remote peer.
- A EnvelopeFilter for a given SignedGossipMessage, which may remove part of the Envelope the SignedGossipMessage originates from
type Discovery ¶
type Discovery interface {
// Lookup returns a network member, or nil if not found
Lookup(PKIID common.PKIidType) *NetworkMember
// Self returns this instance's membership information
Self() NetworkMember
// UpdateMetadata updates this instance's metadata
UpdateMetadata([]byte)
// UpdateEndpoint updates this instance's endpoint
UpdateEndpoint(string)
// Stops this instance
Stop()
// GetMembership returns the alive members in the view
GetMembership() []NetworkMember
// InitiateSync makes the instance ask a given number of peers
// for their membership information
InitiateSync(peerNum int)
// Connect makes this instance to connect to a remote instance
// The identifier param is a function that can be used to identify
// the peer, and to assert its PKI-ID, whether its in the peer's org or not,
// and whether the action was successful or not
Connect(member NetworkMember, id identifier)
}
Discovery is the interface that represents a discovery module
func NewDiscoveryService ¶
func NewDiscoveryService(self NetworkMember, comm CommService, crypt CryptoService, disPol DisclosurePolicy) Discovery
NewDiscoveryService returns a new discovery service with the comm module passed and the crypto service passed
type EnvelopeFilter ¶
type EnvelopeFilter func(message *proto.SignedGossipMessage) *proto.Envelope
EnvelopeFilter may or may not remove part of the Envelope that the given SignedGossipMessage originates from.
type NetworkMember ¶
type NetworkMember struct {
Endpoint string
Metadata []byte
PKIid common.PKIidType
InternalEndpoint string
}
NetworkMember is a peer's representation
func (NetworkMember) PreferredEndpoint ¶
func (n NetworkMember) PreferredEndpoint() string
PreferredEndpoint computes the endpoint to connect to, while preferring internal endpoint over the standard endpoint
func (*NetworkMember) String ¶
func (n *NetworkMember) String() string
String returns a string representation of the NetworkMember
type PeerIdentification ¶
PeerIdentification encompasses a remote peer's PKI-ID and whether its in the same org as the current peer or not
type Sieve ¶
type Sieve func(message *proto.SignedGossipMessage) bool
Sieve defines the messages that are allowed to be sent to some remote peer, based on some criteria. Returns whether the sieve permits sending a given message.
Source Files
¶
- discovery.go
- discovery_impl.go