 Documentation
      ¶
      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
      ¶
      Source Files
      ¶
    
- discovery.go
- discovery_impl.go