Documentation
¶
Index ¶
- Constants
- Variables
- func NewInboundHSHandler(pm p2pcommon.PeerManager, actor p2pcommon.ActorService, ...) p2pcommon.HSHandler
- func NewOutboundHSHandler(pm p2pcommon.PeerManager, actor p2pcommon.ActorService, ...) p2pcommon.HSHandler
- func NewPeerFinder(logger *log.Logger, pm *peerManager, actorService p2pcommon.ActorService, ...) p2pcommon.PeerFinder
- func NewPeerManager(hsFactory p2pcommon.HSHandlerFactory, actor p2pcommon.ActorService, ...) p2pcommon.PeerManager
- func NewWaitingPeerManager(logger *log.Logger, pm *peerManager, lm p2pcommon.ListManager, maxCap int, ...) p2pcommon.WaitingPeerManager
- type AncestorReceiver
- type BlockHashByNoReceiver
- type BlockHashesReceiver
- type BlocksChunkReceiver
- type ConnWork
- type DefaultRoleManager
- type InboundWireHandshaker
- type LegacyInboundHSHandler
- type LegacyOutboundHSHandler
- type LegacyWireHandshaker
- type OutboundWireHandshaker
- type P2P
- func (p2ps *P2P) AfterStart()
- func (p2ps *P2P) BeforeStart()
- func (p2ps *P2P) BeforeStop()
- func (p2ps *P2P) CallRequest(actor string, msg interface{}, timeout time.Duration) (interface{}, error)
- func (p2ps *P2P) CallRequestDefaultTimeout(actor string, msg interface{}) (interface{}, error)
- func (p2ps *P2P) ChainID() *types.ChainID
- func (p2ps *P2P) CreateHSHandler(legacy bool, outbound bool, pid types.PeerID) p2pcommon.HSHandler
- func (p2ps *P2P) CreateRemotePeer(meta p2pcommon.PeerMeta, seq uint32, status *types.Status, stream types.Stream, ...) p2pcommon.RemotePeer
- func (p2ps *P2P) FutureRequest(actor string, msg interface{}, timeout time.Duration) *actor.Future
- func (p2ps *P2P) FutureRequestDefaultTimeout(actor string, msg interface{}) *actor.Future
- func (p2ps *P2P) GetAddresses(peerID types.PeerID, size uint32) bool
- func (p2ps *P2P) GetBlockHashByNo(context actor.Context, msg *message.GetHashByNo)
- func (p2ps *P2P) GetBlockHashes(context actor.Context, msg *message.GetHashes)
- func (p2ps *P2P) GetBlockHeaders(msg *message.GetBlockHeaders) bool
- func (p2ps *P2P) GetBlocks(peerID types.PeerID, blockHashes []message.BlockHash) bool
- func (p2ps *P2P) GetBlocksChunk(context actor.Context, msg *message.GetBlockChunks)
- func (p2ps *P2P) GetChainAccessor() types.ChainAccessor
- func (p2ps *P2P) GetNetworkTransport() p2pcommon.NetworkTransport
- func (p2ps *P2P) GetPeerAccessor() p2pcommon.PeerAccessor
- func (p2ps *P2P) GetSyncAncestor(context actor.Context, msg *message.GetSyncAncestor)
- func (p2ps *P2P) GetTXs(peerID types.PeerID, txHashes []message.TXHash) bool
- func (p2ps *P2P) NotifyBlockProduced(newBlock message.NotifyNewBlock) bool
- func (p2ps *P2P) NotifyNewBlock(newBlock message.NotifyNewBlock) bool
- func (p2ps *P2P) NotifyNewTX(newTXs notifyNewTXs) bool
- func (p2ps *P2P) Receive(context actor.Context)
- func (p2ps *P2P) SendRaftMessage(context actor.Context, msg *message.SendRaft)
- func (p2ps *P2P) SendRequest(actor string, msg interface{})
- func (p2ps *P2P) SetConsensusAccessor(ca consensus.ConsensusAccessor)
- func (p2ps *P2P) Statistics() *map[string]interface{}
- func (p2ps *P2P) TellRequest(actor string, msg interface{})
- type RaftRoleManager
Constants ¶
const ( SyncWorkTTL = time.Second * 30 AddBlockCheckpoint = 100 AddBlockWaitTime = time.Second * 10 )
constants for legacy sync algorithm. DEPRECATED newer sync logging in syncer package is used now.
const ( DiscoveryQueryInterval = time.Minute * 1 MaxAddrListSizePolaris = 200 MaxAddrListSizePeer = 50 )
constants for node discovery
const ( DefaultGlobalBlockCacheSize = 300 DefaultPeerBlockCacheSize = 100 DefaultGlobalTxCacheSize = 50000 DefaultPeerTxCacheSize = 10000 // DefaultPeerTxQueueSize is maximum size of hashes in a single tx notice message DefaultPeerTxQueueSize = 2000 )
constants for caching TODO this value better related to max peer and block produce interval, not constant
const ( GapToSkipAll = 86400 GapToSkipHourly = 3600 GapToSkip5Min = 300 HourlyInterval = time.Hour TenMinutesInterval = time.Minute * 10 MinNewBlkNoticeInterval = time.Second >> 2 )
constants for block notice tuning
Variables ¶
var AcceptedInboundVersions = []p2pcommon.P2PVersion{p2pcommon.P2PVersion032, p2pcommon.P2PVersion031, p2pcommon.P2PVersion030}
AcceptedInboundVersions is list of versions this aergosvr supports. The first is the best recommended version.
var AttemptingOutboundVersions = []p2pcommon.P2PVersion{p2pcommon.P2PVersion032, p2pcommon.P2PVersion031}
var CancelError = errors.New("canceled")
var TimeoutError = errors.New("timeout")
Functions ¶
func NewInboundHSHandler ¶ added in v1.2.0
func NewInboundHSHandler(pm p2pcommon.PeerManager, actor p2pcommon.ActorService, verManager p2pcommon.VersionedManager, log *log.Logger, chainID *types.ChainID, peerID types.PeerID) p2pcommon.HSHandler
func NewOutboundHSHandler ¶ added in v1.2.0
func NewOutboundHSHandler(pm p2pcommon.PeerManager, actor p2pcommon.ActorService, verManager p2pcommon.VersionedManager, log *log.Logger, chainID *types.ChainID, peerID types.PeerID) p2pcommon.HSHandler
func NewPeerFinder ¶ added in v0.9.0
func NewPeerFinder(logger *log.Logger, pm *peerManager, actorService p2pcommon.ActorService, maxCap int, useDiscover, usePolaris bool) p2pcommon.PeerFinder
func NewPeerManager ¶
func NewPeerManager(hsFactory p2pcommon.HSHandlerFactory, actor p2pcommon.ActorService, cfg *cfg.Config, pf p2pcommon.PeerFactory, nt p2pcommon.NetworkTransport, mm metric.MetricsManager, lm p2pcommon.ListManager, logger *log.Logger, mf p2pcommon.MoFactory, skipHandshakeSync bool) p2pcommon.PeerManager
NewPeerManager creates a peer manager object.
func NewWaitingPeerManager ¶ added in v0.9.0
func NewWaitingPeerManager(logger *log.Logger, pm *peerManager, lm p2pcommon.ListManager, maxCap int, useDiscover bool) p2pcommon.WaitingPeerManager
Types ¶
type AncestorReceiver ¶ added in v0.9.0
type AncestorReceiver struct {
// contains filtered or unexported fields
}
BlocksChunkReceiver is send p2p getBlocksRequest to target peer and receive p2p responses till all requests blocks are received It will send response actor message if all blocks are received or failed to receive, but not send response if timeout expired.
func NewAncestorReceiver ¶ added in v0.9.0
func NewAncestorReceiver(actor p2pcommon.ActorService, peer p2pcommon.RemotePeer, seq uint64, hashes [][]byte, ttl time.Duration) *AncestorReceiver
func (*AncestorReceiver) ReceiveResp ¶ added in v0.9.0
func (br *AncestorReceiver) ReceiveResp(msg p2pcommon.Message, msgBody p2pcommon.MessageBody) (ret bool)
ReceiveResp must be called just in read go routine
func (*AncestorReceiver) StartGet ¶ added in v0.9.0
func (br *AncestorReceiver) StartGet()
type BlockHashByNoReceiver ¶ added in v0.8.2
type BlockHashByNoReceiver struct {
// contains filtered or unexported fields
}
BlocksChunkReceiver is send p2p getBlocksRequest to target peer and receive p2p responses till all requests blocks are received It will send response actor message if all blocks are received or failed to receive, but not send response if timeout expired.
func NewBlockHashByNoReceiver ¶ added in v0.8.2
func NewBlockHashByNoReceiver(actor p2pcommon.ActorService, peer p2pcommon.RemotePeer, seq uint64, blockNo types.BlockNo, ttl time.Duration) *BlockHashByNoReceiver
func (*BlockHashByNoReceiver) ReceiveResp ¶ added in v0.8.2
func (br *BlockHashByNoReceiver) ReceiveResp(msg p2pcommon.Message, msgBody p2pcommon.MessageBody) (ret bool)
ReceiveResp must be called just in read go routine
func (*BlockHashByNoReceiver) StartGet ¶ added in v0.8.2
func (br *BlockHashByNoReceiver) StartGet()
type BlockHashesReceiver ¶ added in v0.8.1
type BlockHashesReceiver struct {
// contains filtered or unexported fields
}
BlockHashesReceiver is send p2p GetHashesRequest to target peer and receive p2p responses till all requested hashes are received It will send response actor message if all hashes are received or failed to receive, but not send response if timeout expired.
func NewBlockHashesReceiver ¶ added in v0.8.1
func NewBlockHashesReceiver(actor p2pcommon.ActorService, peer p2pcommon.RemotePeer, seq uint64, req *message.GetHashes, ttl time.Duration) *BlockHashesReceiver
func (*BlockHashesReceiver) ReceiveResp ¶ added in v0.8.1
func (br *BlockHashesReceiver) ReceiveResp(msg p2pcommon.Message, msgBody p2pcommon.MessageBody) (ret bool)
ReceiveResp must be called just in read go routine
func (*BlockHashesReceiver) StartGet ¶ added in v0.8.1
func (br *BlockHashesReceiver) StartGet()
type BlocksChunkReceiver ¶ added in v0.8.1
type BlocksChunkReceiver struct {
// contains filtered or unexported fields
}
BlocksChunkReceiver is send p2p getBlocksRequest to target peer and receive p2p responses till all requests blocks are received It will send response actor message if all blocks are received or failed to receive, but not send response if timeout expired, since syncer actor already dropped wait before.
func NewBlockReceiver ¶ added in v0.8.1
func NewBlockReceiver(actor p2pcommon.ActorService, peer p2pcommon.RemotePeer, seq uint64, blockHashes []message.BlockHash, ttl time.Duration) *BlocksChunkReceiver
func (*BlocksChunkReceiver) ReceiveResp ¶ added in v0.8.1
func (br *BlocksChunkReceiver) ReceiveResp(msg p2pcommon.Message, msgBody p2pcommon.MessageBody) (ret bool)
ReceiveResp must be called just in read go routine
func (*BlocksChunkReceiver) StartGet ¶ added in v0.8.1
func (br *BlocksChunkReceiver) StartGet()
type DefaultRoleManager ¶ added in v1.2.0
type DefaultRoleManager struct {
// contains filtered or unexported fields
}
func (*DefaultRoleManager) GetRole ¶ added in v1.2.0
func (rm *DefaultRoleManager) GetRole(pid types.PeerID) p2pcommon.PeerRole
func (*DefaultRoleManager) NotifyNewBlockMsg ¶ added in v1.2.0
func (rm *DefaultRoleManager) NotifyNewBlockMsg(mo p2pcommon.MsgOrder, peers []p2pcommon.RemotePeer) (skipped, sent int)
type InboundWireHandshaker ¶ added in v0.9.0
type InboundWireHandshaker struct {
// contains filtered or unexported fields
}
func (*InboundWireHandshaker) Handle ¶ added in v0.9.0
func (h *InboundWireHandshaker) Handle(s io.ReadWriteCloser, ttl time.Duration) (p2pcommon.MsgReadWriter, *types.Status, error)
type LegacyInboundHSHandler ¶ added in v0.9.0
type LegacyInboundHSHandler struct {
*LegacyWireHandshaker
}
LegacyInboundHSHandler handshake handler for legacy version
func (*LegacyInboundHSHandler) Handle ¶ added in v0.9.0
func (ih *LegacyInboundHSHandler) Handle(s io.ReadWriteCloser, ttl time.Duration) (p2pcommon.MsgReadWriter, *types.Status, error)
type LegacyOutboundHSHandler ¶ added in v0.9.0
type LegacyOutboundHSHandler struct {
*LegacyWireHandshaker
}
LegacyOutboundHSHandler handshake handler for legacy version
func (*LegacyOutboundHSHandler) Handle ¶ added in v0.9.0
func (oh *LegacyOutboundHSHandler) Handle(s io.ReadWriteCloser, ttl time.Duration) (p2pcommon.MsgReadWriter, *types.Status, error)
type LegacyWireHandshaker ¶ added in v0.9.0
type LegacyWireHandshaker struct {
// contains filtered or unexported fields
}
LegacyWireHandshaker works to handshake to just connected peer, it detect chain networks and protocol versions, and then select InnerHandshaker for that protocol version.
type OutboundWireHandshaker ¶ added in v0.9.0
type OutboundWireHandshaker struct {
// contains filtered or unexported fields
}
func (*OutboundWireHandshaker) Handle ¶ added in v0.9.0
func (h *OutboundWireHandshaker) Handle(s io.ReadWriteCloser, ttl time.Duration) (p2pcommon.MsgReadWriter, *types.Status, error)
type P2P ¶
type P2P struct { *component.BaseComponent // contains filtered or unexported fields }
P2P is actor component for p2p
func NewP2P ¶
func NewP2P(cfg *config.Config, chainSvc *chain.ChainService) *P2P
NewP2P create a new ActorService for p2p
func (*P2P) AfterStart ¶
func (p2ps *P2P) AfterStart()
func (*P2P) BeforeStop ¶
func (p2ps *P2P) BeforeStop()
BeforeStop is called before actor hub stops. it finishes underlying peer manager
func (*P2P) CallRequest ¶
func (p2ps *P2P) CallRequest(actor string, msg interface{}, timeout time.Duration) (interface{}, error)
CallRequest implement interface method of ActorService
func (*P2P) CallRequestDefaultTimeout ¶
CallRequest implement interface method of ActorService
func (*P2P) CreateHSHandler ¶ added in v0.9.0
func (*P2P) CreateRemotePeer ¶ added in v1.2.0
func (*P2P) FutureRequest ¶
FutureRequest implement interface method of ActorService
func (*P2P) FutureRequestDefaultTimeout ¶
FutureRequestDefaultTimeout implement interface method of ActorService
func (*P2P) GetAddresses ¶
GetAddresses send getAddress request to other peer
func (*P2P) GetBlockHashByNo ¶ added in v0.8.2
func (p2ps *P2P) GetBlockHashByNo(context actor.Context, msg *message.GetHashByNo)
GetBlockHashes send request message to peer and make response message for block hashes
func (*P2P) GetBlockHashes ¶ added in v0.8.1
GetBlockHashes send request message to peer and make response message for block hashes
func (*P2P) GetBlockHeaders ¶
func (p2ps *P2P) GetBlockHeaders(msg *message.GetBlockHeaders) bool
GetBlockHeaders send request message to peer and
func (*P2P) GetBlocksChunk ¶ added in v0.8.1
func (p2ps *P2P) GetBlocksChunk(context actor.Context, msg *message.GetBlockChunks)
GetBlocksChunk send request message to peer and
func (*P2P) GetChainAccessor ¶
func (p2ps *P2P) GetChainAccessor() types.ChainAccessor
GetChainAccessor implement interface method of ActorService
func (*P2P) GetNetworkTransport ¶ added in v0.9.0
func (p2ps *P2P) GetNetworkTransport() p2pcommon.NetworkTransport
func (*P2P) GetPeerAccessor ¶ added in v0.9.0
func (p2ps *P2P) GetPeerAccessor() p2pcommon.PeerAccessor
func (*P2P) GetSyncAncestor ¶ added in v0.8.1
func (p2ps *P2P) GetSyncAncestor(context actor.Context, msg *message.GetSyncAncestor)
GetSyncAncestor request remote peer to find ancestor
func (*P2P) NotifyBlockProduced ¶ added in v0.9.0
func (p2ps *P2P) NotifyBlockProduced(newBlock message.NotifyNewBlock) bool
NotifyNewBlock send notice message of new block to a peer
func (*P2P) NotifyNewBlock ¶
func (p2ps *P2P) NotifyNewBlock(newBlock message.NotifyNewBlock) bool
NotifyNewBlock send notice message of new block to a peer
func (*P2P) NotifyNewTX ¶
NotifyNewTX notice tx(s) id created
func (*P2P) SendRaftMessage ¶ added in v1.2.0
func (*P2P) SendRequest ¶
SendRequest implement interface method of ActorService
func (*P2P) SetConsensusAccessor ¶ added in v0.9.0
func (p2ps *P2P) SetConsensusAccessor(ca consensus.ConsensusAccessor)
func (*P2P) Statistics ¶
Statistics show statistic information of p2p module. NOTE: It it not implemented yet
func (*P2P) TellRequest ¶
TellRequest implement interface method of ActorService
type RaftRoleManager ¶ added in v1.2.0
type RaftRoleManager struct {
// contains filtered or unexported fields
}
func (*RaftRoleManager) GetRole ¶ added in v1.2.0
func (rm *RaftRoleManager) GetRole(pid types.PeerID) p2pcommon.PeerRole
func (*RaftRoleManager) NotifyNewBlockMsg ¶ added in v1.2.0
func (rm *RaftRoleManager) NotifyNewBlockMsg(mo p2pcommon.MsgOrder, peers []p2pcommon.RemotePeer) (skipped, sent int)
Source Files
¶
- actorwork.go
- ancestorreceiver.go
- blkreceiver.go
- configs.go
- handshake.go
- handshakev2.go
- hashbynoreceiver.go
- hashreceiver.go
- mofactory.go
- msgorder.go
- p2p.go
- peerfinder.go
- peermanager.go
- reconnect.go
- remotepeer.go
- rolemanager.go
- signature.go
- syncmanager.go
- txnoticetracer.go
- versionmanager.go
- waitpeermanager.go
Directories
¶
Path | Synopsis |
---|---|
* @file * @copyright defined in aergo/LICENSE.txt
|
* @file * @copyright defined in aergo/LICENSE.txt |
Package p2pmock is a generated GoMock package.
|
Package p2pmock is a generated GoMock package. |
Package v030 is a collection of classes for p2p version 0.3.0 It contains IO, handshake, handlers, etc.
|
Package v030 is a collection of classes for p2p version 0.3.0 It contains IO, handshake, handlers, etc. |