p2p

package
v2.0.7 Latest Latest
Warning

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

Go to latest
Published: Jan 11, 2025 License: MIT Imports: 16 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type Listener

type Listener interface {
	Protocol() protocol.ID       // 获取协议ID的方法
	ListenAddress() ma.Multiaddr // 获取监听地址的方法
	TargetAddress() ma.Multiaddr // 获取目标地址的方法
	// contains filtered or unexported methods
}

Listener 接口定义了监听连接并将其代理到目标的功能

type Listeners

type Listeners struct {
	sync.RWMutex // 读写锁,用于并发安全

	Listeners map[protocol.ID]Listener // 存储协议ID和Listener映射关系的字典
}

Listeners 管理一组 Listener 实现,检查冲突并可选择性地分派连接

func (*Listeners) Close

func (r *Listeners) Close(matchFunc func(listener Listener) bool) int

Close 关闭匹配条件的监听器 参数:

  • matchFunc: func(listener Listener) bool,用于匹配监听器的函数

返回:int,表示关闭的监听器数量

func (*Listeners) Register

func (r *Listeners) Register(l Listener) error

Register 在注册表中注册listenerInfo并启动它 参数:

  • l: Listener,待注册的监听器

返回:error,表示注册过程中的错误信息,如果成功则返回nil

type P2P

type P2P struct {
	ListenersLocal *Listeners      // 本地监听器管理
	ListenersP2P   *Listeners      // p2p监听器管理
	Streams        *StreamRegistry // 流注册表
	// contains filtered or unexported fields
}

P2P 结构体包含当前运行的流和监听器的信息

func New

func New(identity peer.ID, peerHost p2phost.Host, peerstore pstore.Peerstore) *P2P

New 创建一个新的 P2P 结构体实例 参数:

  • identity: peer.ID,对等节点ID
  • peerHost: p2phost.Host,libp2p主机实例
  • peerstore: pstore.Peerstore,对等节点存储实例

返回:*P2P,指向P2P实例的指针

func (*P2P) CheckProtoExists

func (p2p *P2P) CheckProtoExists(proto protocol.ID) bool

CheckProtoExists 检查是否已注册协议处理程序 参数:

  • proto: protocol.ID,协议ID

返回:bool,返回是否存在协议处理程序

func (*P2P) ForwardLocal

func (p2p *P2P) ForwardLocal(ctx context.Context, peer peer.ID, proto protocol.ID, bindAddr ma.Multiaddr) (Listener, error)

ForwardLocal 创建一个新的P2P流到远程监听器 参数:

  • ctx: context.Context,上下文用于控制生命周期
  • peer: peer.ID,对等节点ID
  • proto: protocol.ID,协议ID
  • bindAddr: ma.Multiaddr,绑定地址

返回:

  • Listener,返回监听器接口
  • error,返回可能发生的错误

func (*P2P) ForwardRemote

func (p2p *P2P) ForwardRemote(ctx context.Context, proto protocol.ID, addr ma.Multiaddr, reportRemote bool) (Listener, error)

ForwardRemote 创建一个新的p2p监听器 参数:

  • ctx: context.Context,上下文用于控制生命周期
  • proto: protocol.ID,协议ID
  • addr: ma.Multiaddr,目标地址
  • reportRemote: bool,是否报告远程对等节点

返回:

  • Listener,返回监听器接口
  • error,返回可能发生的错误

type Stream

type Stream struct {
	Protocol protocol.ID // 协议ID

	OriginAddr ma.Multiaddr // 原地址
	TargetAddr ma.Multiaddr // 目标地址

	Local  manet.Conn // 本地连接
	Remote net.Stream // 远程流

	Registry *StreamRegistry // 流注册表
	// contains filtered or unexported fields
}

Stream 结构体包含活动的传入和传出p2p流的信息

type StreamRegistry

type StreamRegistry struct {
	sync.Mutex // 互斥锁,用于并发控制

	Streams map[uint64]*Stream // 存储流ID和Stream结构体的映射

	ifconnmgr.ConnManager // 连接管理器接口
	// contains filtered or unexported fields
}

StreamRegistry 是一组活跃的传入和传出的协议应用流

func (*StreamRegistry) Close

func (r *StreamRegistry) Close(s *Stream)

Close 关闭流的端点并注销它 参数:

  • s: *Stream,待关闭的流

func (*StreamRegistry) Deregister

func (r *StreamRegistry) Deregister(streamID uint64)

Deregister 从注册表中注销一个流 参数:

  • streamID: uint64,待注销的流ID

func (*StreamRegistry) Register

func (r *StreamRegistry) Register(streamInfo *Stream)

Register 在注册表中注册一个流 参数:

  • streamInfo: *Stream,待注册的流信息

func (*StreamRegistry) Reset

func (r *StreamRegistry) Reset(s *Stream)

Reset 关闭流的端点并注销它 参数:

  • s: *Stream,待重置的流

Jump to

Keyboard shortcuts

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