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, channelID common.ChannelID, 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.