p2p_base

package
v0.0.7 Latest Latest
Warning

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

Go to latest
Published: Sep 25, 2025 License: MIT Imports: 19 Imported by: 0

Documentation

Index

Constants

View Source
const (
	ProtocolID = "/latency-p2p/1.0.0"
)

Variables

This section is empty.

Functions

func GetIDFromSeed

func GetIDFromSeed(seedStr string) (string, error)

func SetLogger added in v0.0.6

func SetLogger(outerLog *logrus.Logger)

Types

type Message

type Message struct {
	MsgId         string  `json:"msg_id"`
	AckMsgId      string  `json:"ack_msg_id"`
	FromPeerId    peer.ID `json:"from_peer_id"`
	ToPeerId      peer.ID `json:"to_peer_id"`
	FromPeerName  string  `json:"from_peer_name"`
	ToPeerName    string  `json:"to_peer_name"`
	MsgType       MsgType `json:"msg_type"`
	MsgData       string  `json:"msg"`
	TimestampNano int64   `json:"timestamp_nano"` // 纳秒
	NeedsAck      bool    `json:"needs_ack"`
}

func NewAckMessage

func NewAckMessage(fromPeerId, toPeerId peer.ID, fromPeerName, toPeerName string, msgId string) Message

func NewDataMessage

func NewDataMessage(fromPeerId, toPeerId peer.ID, fromPeerName, toPeerName string, msgData string, needsAck bool) Message

type MsgType

type MsgType string
var (
	MsgTypeData MsgType = "data"
	MsgTypeAck  MsgType = "ack"
)

type P2PBaseNode

type P2PBaseNode struct {
	Host              host.Host
	PeerName          string //名称
	ConnectionManager *P2pConnectionManager
	// contains filtered or unexported fields
}

func NewP2PBaseNode

func NewP2PBaseNode(peerName string, port int, seedStr string, targetPeers map[string]string) (*P2PBaseNode, error)

func (*P2PBaseNode) BroadcastMsg

func (baseNode *P2PBaseNode) BroadcastMsg(msgData string, needsAck bool) error

func (*P2PBaseNode) GetHandleRemoteStream

func (baseNode *P2PBaseNode) GetHandleRemoteStream() network.StreamHandler

获取流处理器

func (*P2PBaseNode) MsgChan

func (baseNode *P2PBaseNode) MsgChan() <-chan Message

func (*P2PBaseNode) SendMsg

func (baseNode *P2PBaseNode) SendMsg(targetName string, msgData string, needsAck bool) error

type P2pConnection

type P2pConnection struct {
	PeerId        peer.ID
	PeerAddr      string
	Stream        network.Stream
	WaitAckMsgMap *myutils.MySyncMap[string, *chan bool] // 等待确认的消息通道 msgId -> 确认通道
	MainAckChan   *chan Message                          // 异步消息确认
}

func (*P2pConnection) Close

func (conn *P2pConnection) Close() error

关闭链接

func (*P2pConnection) Recv

func (conn *P2pConnection) Recv() ([]byte, error)

读取数据

func (*P2pConnection) Send

func (conn *P2pConnection) Send(data []byte) error

写入数据

type P2pConnectionManager

type P2pConnectionManager struct {
	BaseNode          *P2PBaseNode
	TargetPeerAddrMap map[string]string         // name -> full addr
	ThisStreamMap     map[string]*P2pConnection // full addr -> stream
	RemoteStreamMap   map[string]*P2pConnection // remote peerId -> stream
}

管理p2p连接的链接池

func NewP2pConnectionManager

func NewP2pConnectionManager(baseNode *P2PBaseNode, targetPeerAddrs map[string]string) *P2pConnectionManager

创建连接管理器

func (*P2pConnectionManager) ConnectToPeer

func (manager *P2pConnectionManager) ConnectToPeer(targetName string) error

连接到目标节点 并建立新链接

func (*P2pConnectionManager) GetConnection

func (manager *P2pConnectionManager) GetConnection(targetName string) (*P2pConnection, error)

获取目标节点的链接

func (*P2pConnectionManager) GetRemoteConnection

func (manager *P2pConnectionManager) GetRemoteConnection(remotePeerId peer.ID) (*P2pConnection, error)

获取远程节点的链接

func (*P2pConnectionManager) HandleStream

func (manager *P2pConnectionManager) HandleStream(stream network.Stream) *P2pConnection

捕获远程节点的链接

func (*P2pConnectionManager) NewP2PConnection

func (manager *P2pConnectionManager) NewP2PConnection(peerId peer.ID, targetPeerAddr string, stream network.Stream) *P2pConnection

Jump to

Keyboard shortcuts

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