Documentation ¶
Index ¶
- Constants
- func NewDiscoverySecurityAdapter(identity utils.PeerIdentityType, iip time.Time, idMapper utils.IdentityMapper, ...) *discoverySecurityAdapter
- type AnchorPeerTracker
- type Config
- type DisclosurePolicy
- type Discovery
- type DiscoveryAdapter
- type DiscoverySecurityAdapter
- type EnvelopeFilter
- type PeerIdentification
- type Sieve
Constants ¶
View Source
const ( DefaultAliveTimeInterval = 5 * time.Second DefaultAliveExpirationTimeout = 25 * time.Second DefaultMsgExpirationFactor = 20 DefaultAliveExpirationCheckInterval = DefaultAliveExpirationTimeout / 10 DefaultReconnectInterval = 25 * time.Second DefaultMaxConnectAttempts = 120 )
Variables ¶
This section is empty.
Functions ¶
func NewDiscoverySecurityAdapter ¶
func NewDiscoverySecurityAdapter(identity utils.PeerIdentityType, iip time.Time, idMapper utils.IdentityMapper, mcs utils.MessageCryptoService, logger mlog.Logger) *discoverySecurityAdapter
Types ¶
type AnchorPeerTracker ¶
type AnchorPeerTracker interface { IsAnchorPeer(endpoint string) bool Update(channelName string, endpoints map[string]struct{}) }
AnchorPeerTracker 给定一个节点的 endpoint,判断该节点是否是锚点。
type Config ¶
type Config struct { AliveTimeInterval time.Duration AliveExpirationTimeout time.Duration AliveExpirationCheckInterval time.Duration ReconnectInterval time.Duration MaxConnectionAttempts int // MsgExpirationFactor 定义了一个乘法因子,用来调节 alive 消息的过期时间。 MsgExpirationFactor int // BootstrapPeers 在启动时需要连接到的 peer 节点。 BootstrapPeers []string }
type DisclosurePolicy ¶
type DisclosurePolicy func(remotePeer *utils.NetworkMember) (Sieve, EnvelopeFilter)
DisclosurePolicy 定义了给定的远程对等体是否有资格了解消息,以及从给定的 SignedGossipMessage 中有资格了解哪些消息。
type Discovery ¶
type Discovery interface { // Lookup 根据节点 ID 寻找节点。 Lookup(pkiID utils.PKIidType) *utils.NetworkMember // Self 返回此实例的信息。 Self() utils.NetworkMember // UpdateMetadata 更新此实例的元数据信息。 UpdateMetadata([]byte) // UpdateEndpoint 更新此实例的 endpoint。 UpdateEndpoint(string) // GetMembership 返回所有成员信息。 GetMembership() utils.Members // InitiateSync 向 peerNum 个节点询问它们所掌握的成员信息,将这些信息同步过来。 InitiateSync(peerNum int) // Connect 与节点建立连接,建立连接的方式就是给对方发送一个 membership request,如果发送不了,那就及时建立一个与对方的连接。 Connect(member utils.NetworkMember, identifier identifier) Stop() }
func NewDiscoveryService ¶
func NewDiscoveryService(self utils.NetworkMember, adapter DiscoveryAdapter, crypt DiscoverySecurityAdapter, policy DisclosurePolicy, config Config, anchorPeerTracker AnchorPeerTracker, logger mlog.Logger) Discovery
type DiscoveryAdapter ¶
type DiscoveryAdapter interface { // Gossip 广播。 Gossip(msg *utils.SignedGossipMessage) // SendToPeer 单播。 SendToPeer(peer *utils.NetworkMember, msg *utils.SignedGossipMessage) Ping(peer *utils.NetworkMember) bool Accept() <-chan utils.ReceivedMessage // ReceiveDiscoveryMessage 接收与 discovery 相关的消息。 ReceiveDiscoveryMessage(msg utils.ReceivedMessage) PresumedDead() <-chan utils.PKIidType CloseConn(peer *utils.NetworkMember) // Forward 将消息转发给下一跳。 Forward(msg utils.ReceivedMessage) // IdentitySwitch 返回一个通道,此通道内存放证书发生变化的节点的 ID。 IdentitySwitch() <-chan utils.PKIidType Stop() }
func NewDiscoveryAdapter ¶
func NewDiscoveryAdapter(c comm.Comm, propagateTimes int, emitter utils.BatchingEmitter, presumedDead chan utils.PKIidType, disclosurePolicy DisclosurePolicy) DiscoveryAdapter
type DiscoverySecurityAdapter ¶
type DiscoverySecurityAdapter interface { SignMessage(m *pgossip.GossipMessage, internalEndpoint string) *pgossip.Envelope ValidateAliveMsg(m *utils.SignedGossipMessage) bool }
type EnvelopeFilter ¶
type EnvelopeFilter func(message *utils.SignedGossipMessage) *pgossip.Envelope
EnvelopeFilter 会过滤掉 SignedGossipMessage 中的部分信息得到一个 Envelope。
type PeerIdentification ¶
type Sieve ¶
type Sieve func(message *utils.SignedGossipMessage) bool
Sieve 决定了是否能将 SignedGossipMessage 发送给远程节点。
Click to show internal directories.
Click to hide internal directories.