Documentation ¶
Overview ¶
Package types protocol and stream register `
Index ¶
- func AuthenticateMessage(message types.Message, data *types.MessageComm) bool
- func ClearEventHandler()
- func CloseStream(stream core.Stream) error
- func NewStream(host core.Host, pid core.PeerID, protoIDs ...core.ProtocolID) (core.Stream, error)
- func ReadStream(data types.Message, stream core.Stream) error
- func ReadStreamTimeout(data types.Message, stream core.Stream, timeout time.Duration) error
- func RegisterEventHandler(eventID int64, handler EventHandler)
- func RegisterProtocol(typeName string, proto IProtocol)
- func RegisterStreamHandler(typeName, msgID string, handler StreamHandler)
- func SignProtoMessage(message types.Message, host core.Host) ([]byte, error)
- func WriteStream(data types.Message, stream core.Stream) error
- type BaseProtocol
- func (base *BaseProtocol) GetChainCfg() *types.Chain33Config
- func (base *BaseProtocol) GetConnsManager() IConnManager
- func (base *BaseProtocol) GetHost() core.Host
- func (base *BaseProtocol) GetP2PEnv() *P2PEnv
- func (base *BaseProtocol) GetPeerInfoManager() IPeerInfoManager
- func (base *BaseProtocol) GetQueueClient() queue.Client
- func (base *BaseProtocol) InitProtocol(data *P2PEnv)
- func (base *BaseProtocol) NewMessageCommon(msgID, pid string, nodePubkey []byte, gossip bool) *types.MessageComm
- func (base *BaseProtocol) QueryBlockChain(ty int64, req interface{}) (interface{}, error)
- func (base *BaseProtocol) QueryMempool(ty int64, req interface{}) (interface{}, error)
- func (base *BaseProtocol) QueryModule(module string, msgTy int64, req interface{}) (interface{}, error)
- func (base *BaseProtocol) SendPeer(req *StreamRequest) error
- func (base *BaseProtocol) SendRecvPeer(req *StreamRequest, resp types.Message) error
- type BaseStreamHandler
- func (s *BaseStreamHandler) GetProtocol() IProtocol
- func (s *BaseStreamHandler) Handle(core.Stream)
- func (s *BaseStreamHandler) HandleStream(stream core.Stream)
- func (s *BaseStreamHandler) ReuseStream() bool
- func (s *BaseStreamHandler) SetProtocol(protocol IProtocol)
- func (s *BaseStreamHandler) SignProtoMessage(message types.Message, host core.Host) ([]byte, error)
- func (s *BaseStreamHandler) VerifyRequest(message types.Message, messageComm *types.MessageComm) bool
- type EventHandler
- type IConnManager
- type IPeerInfoManager
- type IProtocol
- type P2PEnv
- type ProtocolManager
- type RoutingTabler
- type StreamHandler
- type StreamRequest
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func AuthenticateMessage ¶
func AuthenticateMessage(message types.Message, data *types.MessageComm) bool
AuthenticateMessage auth msg
func CloseStream ¶
CloseStream 关闭流, 存在超时阻塞情况, 对于并行情况,可以优先处理读写,最后统一关闭
func ReadStream ¶
ReadStream read data from stream
func ReadStreamTimeout ¶ added in v1.65.0
ReadStreamTimeout 读取stream并设置超时, 负值不设置超时
func RegisterEventHandler ¶
func RegisterEventHandler(eventID int64, handler EventHandler)
RegisterEventHandler 注册消息处理函数
func RegisterProtocol ¶
RegisterProtocol 注册协议类型
func RegisterStreamHandler ¶
func RegisterStreamHandler(typeName, msgID string, handler StreamHandler)
RegisterStreamHandler 注册typeName,msgID,处理函数
func SignProtoMessage ¶
SignProtoMessage sign an outgoing p2p message payload
Types ¶
type BaseProtocol ¶
type BaseProtocol struct {
*P2PEnv
}
BaseProtocol store public data
func (*BaseProtocol) GetChainCfg ¶
func (base *BaseProtocol) GetChainCfg() *types.Chain33Config
GetChainCfg get chain cfg
func (*BaseProtocol) GetConnsManager ¶
func (base *BaseProtocol) GetConnsManager() IConnManager
GetConnsManager get connection manager
func (*BaseProtocol) GetP2PEnv ¶
func (base *BaseProtocol) GetP2PEnv() *P2PEnv
GetP2PEnv get p2p env
func (*BaseProtocol) GetPeerInfoManager ¶
func (base *BaseProtocol) GetPeerInfoManager() IPeerInfoManager
GetPeerInfoManager get peer info manager
func (*BaseProtocol) GetQueueClient ¶
func (base *BaseProtocol) GetQueueClient() queue.Client
GetQueueClient get chain33 msg queue client
func (*BaseProtocol) InitProtocol ¶
func (base *BaseProtocol) InitProtocol(data *P2PEnv)
InitProtocol 初始化协议
func (*BaseProtocol) NewMessageCommon ¶
func (base *BaseProtocol) NewMessageCommon(msgID, pid string, nodePubkey []byte, gossip bool) *types.MessageComm
NewMessageCommon new msg common struct
func (*BaseProtocol) QueryBlockChain ¶
func (base *BaseProtocol) QueryBlockChain(ty int64, req interface{}) (interface{}, error)
QueryBlockChain query blockchain
func (*BaseProtocol) QueryMempool ¶
func (base *BaseProtocol) QueryMempool(ty int64, req interface{}) (interface{}, error)
QueryMempool query mempool
func (*BaseProtocol) QueryModule ¶
func (base *BaseProtocol) QueryModule(module string, msgTy int64, req interface{}) (interface{}, error)
QueryModule query msg queue module
func (*BaseProtocol) SendPeer ¶
func (base *BaseProtocol) SendPeer(req *StreamRequest) error
SendPeer send data to peer with peer id
func (*BaseProtocol) SendRecvPeer ¶
func (base *BaseProtocol) SendRecvPeer(req *StreamRequest, resp types.Message) error
SendRecvPeer send request to peer and wait response
type BaseStreamHandler ¶
type BaseStreamHandler struct { Protocol IProtocol // contains filtered or unexported fields }
BaseStreamHandler base stream handler
func (*BaseStreamHandler) GetProtocol ¶
func (s *BaseStreamHandler) GetProtocol() IProtocol
GetProtocol get protocol
func (*BaseStreamHandler) Handle ¶
func (s *BaseStreamHandler) Handle(core.Stream)
Handle handle stream
func (*BaseStreamHandler) HandleStream ¶
func (s *BaseStreamHandler) HandleStream(stream core.Stream)
HandleStream stream事件预处理函数
func (*BaseStreamHandler) ReuseStream ¶ added in v1.65.0
func (s *BaseStreamHandler) ReuseStream() bool
ReuseStream 复用stream
func (*BaseStreamHandler) SetProtocol ¶
func (s *BaseStreamHandler) SetProtocol(protocol IProtocol)
SetProtocol set protocol
func (*BaseStreamHandler) SignProtoMessage ¶
SignProtoMessage sign data
func (*BaseStreamHandler) VerifyRequest ¶
func (s *BaseStreamHandler) VerifyRequest(message types.Message, messageComm *types.MessageComm) bool
VerifyRequest verify data
type EventHandler ¶
EventHandler handle chain33 event
func GetEventHandler ¶
func GetEventHandler(eventID int64) (EventHandler, bool)
GetEventHandler get event handler
type IConnManager ¶ added in v1.65.0
type IConnManager interface { FetchConnPeers() []peer.ID BoundSize() (in int, out int) IsNeighbors(id peer.ID) bool GetLatencyByPeer(pids []peer.ID) map[string]time.Duration GetNetRate() metrics.Stats BandTrackerByProtocol() *types.NetProtocolInfos RateCaculate(ratebytes float64) string }
IConnManager connection manager interface
type IPeerInfoManager ¶ added in v1.65.0
type IPeerInfoManager interface { Copy(dest *types.Peer, source *types.P2PPeerInfo) Add(pid string, info *types.Peer) FetchPeerInfosInMin() []*types.Peer GetPeerInfoInMin(key string) *types.Peer }
IPeerInfoManager peer info manager interface
type P2PEnv ¶
type P2PEnv struct { ChainCfg *types.Chain33Config QueueClient queue.Client Host core.Host ConnManager IConnManager PeerInfoManager IPeerInfoManager Discovery *net.Discovery P2PManager *p2p.Manager SubConfig *p2pty.P2PSubConfig Pubsub *net.PubSub Ctx context.Context DB ds.Datastore RoutingTable *kbt.RoutingTable *discovery.RoutingDiscovery }
P2PEnv p2p全局公共变量
type ProtocolManager ¶
type ProtocolManager struct {
// contains filtered or unexported fields
}
ProtocolManager 协议管理
type RoutingTabler ¶ added in v1.65.0
type RoutingTabler interface {
RoutingTable() *kbt.RoutingTable
}
RoutingTabler routing table interface
type StreamHandler ¶
type StreamHandler interface { // GetProtocol get protocol GetProtocol() IProtocol // SetProtocol 初始化公共结构, 内部通过protocol获取外部依赖公共类, 如queue.client等 SetProtocol(protocol IProtocol) // VerifyRequest 验证请求数据 VerifyRequest(message types.Message, messageComm *types.MessageComm) bool //SignMessage SignProtoMessage(message types.Message, host core.Host) ([]byte, error) // Handle 处理请求 Handle(stream core.Stream) // ReuseStream 复用stream,处理后不进行关闭 ReuseStream() bool }
StreamHandler stream handler
type StreamRequest ¶
type StreamRequest struct { // PeerID peer id PeerID core.PeerID // MsgID stream msg id MsgID []core.ProtocolID // Data request data Data types.Message }
StreamRequest stream request