Documentation
¶
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
Types ¶
type Adapter ¶
type Adapter interface {
// GetConf returns the configuration that this GossipChannel will posses
GetConf() Config
// Gossip gossips a message in the channel
Gossip(message *proto.SignedGossipMessage)
// Forward sends a message to the next hops
Forward(message proto.ReceivedMessage)
// DeMultiplex de-multiplexes an item to subscribers
DeMultiplex(interface{})
// GetMembership returns the known alive peers and their information
GetMembership() []discovery.NetworkMember
// Lookup returns a network member, or nil if not found
Lookup(PKIID common.PKIidType) *discovery.NetworkMember
// Send sends a message to a list of peers
Send(msg *proto.SignedGossipMessage, peers ...*comm.RemotePeer)
// ValidateStateInfoMessage returns an error if a message
// hasn't been signed correctly, nil otherwise.
ValidateStateInfoMessage(message *proto.SignedGossipMessage) error
// GetOrgOfPeer returns the organization ID of a given peer PKI-ID
GetOrgOfPeer(pkiID common.PKIidType) api.OrgIdentityType
// GetIdentityByPKIID returns an identity of a peer with a certain
// pkiID, or nil if not found
GetIdentityByPKIID(pkiID common.PKIidType) api.PeerIdentityType
}
Adapter enables the gossipChannel to communicate with gossipServiceImpl.
type Config ¶
type Config struct {
ID string
PublishStateInfoInterval time.Duration
MaxBlockCountToStore int
PullPeerNum int
PullInterval time.Duration
RequestStateInfoInterval time.Duration
BlockExpirationInterval time.Duration
StateInfoCacheSweepInterval time.Duration
}
Config is a configuration item of the channel store
type GossipChannel ¶
type GossipChannel interface {
// GetPeers returns a list of peers with metadata as published by them
GetPeers() []discovery.NetworkMember
// PeerFilter receives a SubChannelSelectionCriteria and returns a RoutingFilter that selects
// only peer identities that match the given criteria
PeerFilter(api.SubChannelSelectionCriteria) filter.RoutingFilter
// IsMemberInChan checks whether the given member is eligible to be in the channel
IsMemberInChan(member discovery.NetworkMember) bool
// UpdateStateInfo updates this channel's StateInfo message
// that is periodically published
UpdateStateInfo(msg *proto.SignedGossipMessage)
// IsOrgInChannel returns whether the given organization is in the channel
IsOrgInChannel(membersOrg api.OrgIdentityType) bool
// EligibleForChannel returns whether the given member should get blocks
// for this channel
EligibleForChannel(member discovery.NetworkMember) bool
// HandleMessage processes a message sent by a remote peer
HandleMessage(proto.ReceivedMessage)
// AddToMsgStore adds a given GossipMessage to the message store
AddToMsgStore(msg *proto.SignedGossipMessage)
// ConfigureChannel (re)configures the list of organizations
// that are eligible to be in the channel
ConfigureChannel(joinMsg api.JoinChannelMessage)
// LeaveChannel makes the peer leave the channel
LeaveChannel()
// Stop stops the channel's activity
Stop()
}
GossipChannel defines an object that deals with all channel-related messages
func NewGossipChannel ¶
func NewGossipChannel(pkiID common.PKIidType, org api.OrgIdentityType, mcs api.MessageCryptoService, chainID common.ChainID, adapter Adapter, joinMsg api.JoinChannelMessage) GossipChannel
NewGossipChannel creates a new GossipChannel
Click to show internal directories.
Click to hide internal directories.