identify

package
v0.0.4 Latest Latest
Warning

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

Go to latest
Published: Jan 13, 2025 License: MIT Imports: 29 Imported by: 0

Documentation

Index

Constants

View Source
const (
	// ID 是 identify 服务 1.0.0 版本的 protocol.ID
	ID = "/ipfs/id/1.0.0"

	// IDPush 是 Identify push 协议的 protocol.ID
	// 它发送包含对等节点当前状态的完整 identify 消息
	IDPush = "/ipfs/id/push/1.0.0"

	// ServiceName 是 identify 服务的名称
	ServiceName = "libp2p.identify"
)

Variables

View Source
var ActivationThresh = 4

ActivationThresh 设置一个地址必须被观察到多少次才能被"激活",并作为本地节点可被联系的地址广播给其他节点 这些"观察"事件默认在40分钟后过期(OwnObservedAddressTTL * ActivationThreshold) 它们会在 GCInterval 设置的 GC 轮次中被清理

View Source
var Timeout = 30 * time.Second

Timeout 是所有传入的 Identify 交互的超时时间

Functions

func HasConsistentTransport

func HasConsistentTransport(a ma.Multiaddr, green []ma.Multiaddr) bool

HasConsistentTransport 如果地址 'a' 与绿色集合中的任何地址共享协议集,则返回 true 这用于检查给定地址是否可能是对等节点正在监听的地址之一 参数:

  • a: ma.Multiaddr 要检查的地址
  • green: []ma.Multiaddr 绿色地址集合

返回值:

  • bool 是否共享协议集

func NewIDService

func NewIDService(h host.Host, opts ...Option) (*idService, error)

NewIDService 构造一个新的 *idService 并通过将其流处理程序附加到给定的 host.Host 来激活它 参数:

  • h: host.Host libp2p 主机
  • opts: ...Option 配置选项

返回值:

  • *idService 新创建的 identify 服务
  • error 如果创建失败则返回错误

Types

type IDService

type IDService interface {
	// IdentifyConn 同步触发连接上的 identify 请求并等待其完成
	// 如果连接正在被其他调用者识别,此调用将等待
	// 如果连接已经被识别,它将立即返回
	IdentifyConn(network.Conn)

	// IdentifyWait 触发 identify(如果连接尚未被识别)并返回一个通道
	// 该通道在 identify 协议完成时关闭
	IdentifyWait(network.Conn) <-chan struct{}

	// OwnObservedAddrs 返回对等节点报告我们拨号的地址
	OwnObservedAddrs() []ma.Multiaddr

	// ObservedAddrsFor 返回对等节点报告我们从特定本地地址拨号的地址
	ObservedAddrsFor(local ma.Multiaddr) []ma.Multiaddr

	// Start 启动 identify 服务
	Start()

	// Close 关闭 identify 服务
	io.Closer
}

IDService 定义了 identify 服务的接口

type MetricsTracer

type MetricsTracer interface {
	// TriggeredPushes 统计由事件触发的 IdentifyPush 次数
	TriggeredPushes(event any)

	// ConnPushSupport 按 Push 支持情况统计对等节点
	ConnPushSupport(identifyPushSupport)

	// IdentifyReceived 跟踪接收 identify 响应的指标
	IdentifyReceived(isPush bool, numProtocols int, numAddrs int)

	// IdentifySent 跟踪发送 identify 响应的指标
	IdentifySent(isPush bool, numProtocols int, numAddrs int)
}

MetricsTracer 定义了指标跟踪器的接口

func NewMetricsTracer

func NewMetricsTracer(opts ...MetricsTracerOption) MetricsTracer

NewMetricsTracer 创建新的指标跟踪器 参数:

  • opts: ...MetricsTracerOption 配置选项

返回值:

  • MetricsTracer 指标跟踪器实例

type MetricsTracerOption

type MetricsTracerOption func(*metricsTracerSetting)

MetricsTracerOption 定义了配置指标跟踪器的函数类型

func WithRegisterer

func WithRegisterer(reg prometheus.Registerer) MetricsTracerOption

WithRegisterer 设置指标注册器 参数:

  • reg: prometheus.Registerer 指标注册器

返回值:

  • MetricsTracerOption 配置函数

type ObservedAddrManager

type ObservedAddrManager struct {
	// contains filtered or unexported fields
}

ObservedAddrManager 将连接的本地 multiaddr 映射到它们的外部可观察 multiaddr

func NewObservedAddrManager

func NewObservedAddrManager(listenAddrs, hostAddrs func() []ma.Multiaddr,
	interfaceListenAddrs func() ([]ma.Multiaddr, error), normalize func(ma.Multiaddr) ma.Multiaddr) (*ObservedAddrManager, error)

NewObservedAddrManager 返回一个新的地址管理器,使用 peerstore.OwnObservedAddressTTL 作为 TTL 参数:

  • listenAddrs: func() []ma.Multiaddr 返回监听地址的函数
  • hostAddrs: func() []ma.Multiaddr 返回主机地址的函数
  • interfaceListenAddrs: func() ([]ma.Multiaddr, error) 返回接口监听地址的函数
  • normalize: func(ma.Multiaddr) ma.Multiaddr 地址规范化函数

返回值:

  • *ObservedAddrManager: 新创建的地址管理器
  • error: 创建过程中的错误

func (*ObservedAddrManager) Addrs

func (o *ObservedAddrManager) Addrs() []ma.Multiaddr

Addrs 返回所有已激活的观察地址 返回值:

  • []ma.Multiaddr: 所有已激活的观察地址列表

func (*ObservedAddrManager) AddrsFor

func (o *ObservedAddrManager) AddrsFor(addr ma.Multiaddr) (addrs []ma.Multiaddr)

AddrsFor 返回与给定(已解析的)监听地址关联的所有已激活的观察地址 参数:

  • addr: ma.Multiaddr 监听地址

返回值:

  • []ma.Multiaddr: 已激活的观察地址列表

func (*ObservedAddrManager) Close

func (o *ObservedAddrManager) Close() error

func (*ObservedAddrManager) Record

func (o *ObservedAddrManager) Record(conn connMultiaddrs, observed ma.Multiaddr)

Record 将观察排队以进行记录 参数:

  • conn: connMultiaddrs 连接对象
  • observed: ma.Multiaddr 观察到的地址

type Option

type Option func(*config)

Option 是用于标识协议的选项函数类型 参数:

  • *config: 配置对象指针

func DisableObservedAddrManager

func DisableObservedAddrManager() Option

DisableObservedAddrManager 禁用观察地址管理器 这也会有效地禁用 NAT 发射器和 EvtNATDeviceTypeChanged 事件 返回值:

  • Option 配置选项函数

func DisableSignedPeerRecord

func DisableSignedPeerRecord() Option

DisableSignedPeerRecord 禁用在传出标识响应中填充签名的对等节点记录,仅发送未签名的地址 返回值:

  • Option 配置选项函数

func ProtocolVersion

func ProtocolVersion(s string) Option

ProtocolVersion 设置用于标识对等节点所使用的协议族的协议版本字符串 参数:

  • s: string 协议版本字符串

返回值:

  • Option 配置选项函数

func UserAgent

func UserAgent(ua string) Option

UserAgent 设置此节点用于向对等节点标识自身的用户代理 参数:

  • ua: string 用户代理字符串

返回值:

  • Option 配置选项函数

func WithMetricsTracer

func WithMetricsTracer(tr MetricsTracer) Option

WithMetricsTracer 设置指标追踪器 参数:

  • tr: MetricsTracer 指标追踪器接口

返回值:

  • Option 配置选项函数

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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