Documentation ¶
Index ¶
Constants ¶
View Source
const DefMsgExpirationTimeout = election.DefLeaderAliveThreshold * 10
Variables ¶
This section is empty.
Functions ¶
Types ¶
type Adapter ¶
type Adapter interface { Sign(msg *proto.GossipMessage) (*protoext.SignedGossipMessage, error) // GetConf returns the configuration that this GossipChannel will posses GetConf() Config // Gossip gossips a message in the channel Gossip(message *protoext.SignedGossipMessage) // Forward sends a message to the next hops Forward(message protoext.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 *protoext.SignedGossipMessage, peers ...*comm.RemotePeer) // ValidateStateInfoMessage returns an error if a message // hasn't been signed correctly, nil otherwise. ValidateStateInfoMessage(message *protoext.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 TimeForMembershipTracker time.Duration DigestWaitTime time.Duration RequestWaitTime time.Duration ResponseWaitTime time.Duration MsgExpirationTimeout time.Duration }
Config is a configuration item of the channel store
type GossipChannel ¶
type GossipChannel interface { // Self returns a StateInfoMessage about the peer Self() *protoext.SignedGossipMessage // 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 // UpdateLedgerHeight updates the ledger height the peer // publishes to other peers in the channel UpdateLedgerHeight(height uint64) // UpdateChaincodes updates the chaincodes the peer publishes // to other peers in the channel UpdateChaincodes(chaincode []*proto.Chaincode) // 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(protoext.ReceivedMessage) // AddToMsgStore adds a given GossipMessage to the message store AddToMsgStore(msg *protoext.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, metrics *metrics.MembershipMetrics, logger util.Logger) GossipChannel
NewGossipChannel creates a new GossipChannel
Click to show internal directories.
Click to hide internal directories.