types

package
v1.65.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Sep 25, 2020 License: BSD-3-Clause Imports: 22 Imported by: 0

Documentation

Overview

Package types protocol and stream register `

Index

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 ClearEventHandler

func ClearEventHandler()

ClearEventHandler clear event handler map

func CloseStream

func CloseStream(stream core.Stream) error

CloseStream 关闭流, 存在超时阻塞情况, 对于并行情况,可以优先处理读写,最后统一关闭

func NewStream

func NewStream(host core.Host, pid core.PeerID, protoIDs ...core.ProtocolID) (core.Stream, error)

NewStream new libp2p stream

func ReadStream

func ReadStream(data types.Message, stream core.Stream) error

ReadStream read data from stream

func ReadStreamTimeout added in v1.65.0

func ReadStreamTimeout(data types.Message, stream core.Stream, timeout time.Duration) error

ReadStreamTimeout 读取stream并设置超时, 负值不设置超时

func RegisterEventHandler

func RegisterEventHandler(eventID int64, handler EventHandler)

RegisterEventHandler 注册消息处理函数

func RegisterProtocol

func RegisterProtocol(typeName string, proto IProtocol)

RegisterProtocol 注册协议类型

func RegisterStreamHandler

func RegisterStreamHandler(typeName, msgID string, handler StreamHandler)

RegisterStreamHandler 注册typeName,msgID,处理函数

func SignProtoMessage

func SignProtoMessage(message types.Message, host core.Host) ([]byte, error)

SignProtoMessage sign an outgoing p2p message payload

func WriteStream

func WriteStream(data types.Message, stream core.Stream) error

WriteStream send data to stream

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) GetHost

func (base *BaseProtocol) GetHost() core.Host

GetHost get local host

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

func (s *BaseStreamHandler) SignProtoMessage(message types.Message, host core.Host) ([]byte, error)

SignProtoMessage sign data

func (*BaseStreamHandler) VerifyRequest

func (s *BaseStreamHandler) VerifyRequest(message types.Message, messageComm *types.MessageComm) bool

VerifyRequest verify data

type EventHandler

type EventHandler func(*queue.Message)

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 IProtocol

type IProtocol interface {
	InitProtocol(*P2PEnv)
	GetP2PEnv() *P2PEnv
}

IProtocol protocol 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 协议管理

func (*ProtocolManager) Init

func (p *ProtocolManager) Init(env *P2PEnv)

Init 初始化

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

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL