connmgr

package
v0.0.6 Latest Latest
Warning

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

Go to latest
Published: Jan 22, 2025 License: MIT Imports: 14 Imported by: 1

Documentation

Index

Constants

This section is empty.

Variables

View Source
var DefaultResolution = 1 * time.Minute

DefaultResolution 是衰减追踪器的默认分辨率

Functions

func NewDecayer

func NewDecayer(cfg *DecayerCfg, mgr *BasicConnMgr) (*decayer, error)

NewDecayer 创建一个新的衰减标签注册表 参数:

  • cfg: *DecayerCfg,衰减器配置
  • mgr: *BasicConnMgr,连接管理器

返回:

  • *decayer: 新创建的衰减器
  • error: 如果创建过程中出现错误则返回错误

Types

type BasicConnMgr

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

BasicConnMgr 是一个连接管理器,当连接数超过高水位时会修剪连接。 新连接在被修剪之前会有一个宽限期。 修剪会在需要时自动运行,只有当距离上次修剪的时间超过10秒时才会执行。 此外,可以通过该结构体的公共接口显式请求修剪(参见 TrimOpenConns)。

配置参数见 NewConnManager。

func NewConnManager

func NewConnManager(low, hi int, opts ...Option) (*BasicConnMgr, error)

NewConnManager 创建一个新的 BasicConnMgr 参数:

  • low: int,低水位线,当连接数低于此值时不会触发修剪
  • hi: int,高水位线,当连接数超过此值时触发修剪
  • opts: ...Option,可选的配置选项

返回:

  • *BasicConnMgr: 新创建的连接管理器
  • error: 如果创建过程中出现错误则返回错误

func (*BasicConnMgr) CheckLimit

func (cm *BasicConnMgr) CheckLimit(systemLimit connmgr.GetConnLimiter) error

CheckLimit 检查连接限制是否超过系统限制 参数:

  • systemLimit: 系统连接限制器

返回:

  • error: 如果超过限制则返回错误

func (*BasicConnMgr) Close

func (cm *BasicConnMgr) Close() error

Close 关闭连接管理器 参数: 无 返回:

  • error: 关闭过程中的错误

func (*BasicConnMgr) GetInfo

func (cm *BasicConnMgr) GetInfo() CMInfo

GetInfo 返回此连接管理器的配置和状态数据 返回:

  • CMInfo: 连接管理器的信息

func (*BasicConnMgr) GetTagInfo

func (cm *BasicConnMgr) GetTagInfo(p peer.ID) *connmgr.TagInfo

GetTagInfo 获取与指定peer关联的标签信息,如果p指向未知peer则返回nil 参数:

  • p: peer ID

返回:

  • *connmgr.TagInfo: peer的标签信息

func (*BasicConnMgr) IsProtected

func (cm *BasicConnMgr) IsProtected(id peer.ID, tag string) (protected bool)

IsProtected 检查指定peer ID和标签是否受保护 参数:

  • id: peer ID
  • tag: 标签名

返回:

  • protected: 是否受保护

func (*BasicConnMgr) Notifee

func (cm *BasicConnMgr) Notifee() network.Notifiee

Notifee 返回一个接收器,通过它通知器可以在事件发生时通知 BasicConnMgr 目前,通知器仅对连接事件{Connected, Disconnected}做出反应 返回:

  • network.Notifiee: 通知接收器

func (*BasicConnMgr) Protect

func (cm *BasicConnMgr) Protect(id peer.ID, tag string)

Protect 保护指定peer ID和标签 参数:

  • id: peer ID
  • tag: 标签名

func (BasicConnMgr) RegisterDecayingTag

func (d BasicConnMgr) RegisterDecayingTag(name string, interval time.Duration, decayFn connmgr.DecayFn, bumpFn connmgr.BumpFn) (connmgr.DecayingTag, error)

RegisterDecayingTag 注册一个新的衰减标签 参数:

  • name: string,标签名称
  • interval: time.Duration,衰减间隔
  • decayFn: connmgr.DecayFn,衰减函数
  • bumpFn: connmgr.BumpFn,增加函数

返回:

  • connmgr.DecayingTag: 新创建的衰减标签
  • error: 如果注册过程中出现错误则返回错误

func (*BasicConnMgr) TagPeer

func (cm *BasicConnMgr) TagPeer(p peer.ID, tag string, val int)

TagPeer 为指定peer关联一个字符串标签和整数值 参数:

  • p: peer ID
  • tag: 标签名
  • val: 标签值

func (*BasicConnMgr) TrimOpenConns

func (cm *BasicConnMgr) TrimOpenConns(_ context.Context)

TrimOpenConns 关闭尽可能多的peer连接,使peer数量等于低水位 peer按总值升序排序,优先修剪分数最低的peer,只要它们不在宽限期内 此函数会阻塞直到修剪完成 如果修剪正在进行,不会启动新的修剪,而是等待当前修剪完成后返回 参数:

  • _: context.Context,上下文(未使用)

func (*BasicConnMgr) Unprotect

func (cm *BasicConnMgr) Unprotect(id peer.ID, tag string) (protected bool)

Unprotect 取消对指定peer ID和标签的保护 参数:

  • id: peer ID
  • tag: 标签名

返回:

  • protected: 是否仍受保护

func (*BasicConnMgr) UntagPeer

func (cm *BasicConnMgr) UntagPeer(p peer.ID, tag string)

UntagPeer 解除指定peer的标签关联 参数:

  • p: peer ID
  • tag: 要解除的标签名

func (*BasicConnMgr) UpsertTag

func (cm *BasicConnMgr) UpsertTag(p peer.ID, tag string, upsert func(int) int)

UpsertTag 插入/更新peer标签 参数:

  • p: peer ID
  • tag: 标签名
  • upsert: 更新函数,接收旧值返回新值

type CMInfo

type CMInfo struct {
	// LowWater 低水位线,如 NewConnManager 中所述
	LowWater int

	// HighWater 高水位线,如 NewConnManager 中所述
	HighWater int

	// LastTrim 上次触发修剪的时间戳
	LastTrim time.Time

	// GracePeriod 配置的宽限期,如 NewConnManager 中所述
	GracePeriod time.Duration

	// ConnCount 当前连接数
	ConnCount int
}

CMInfo 保存 BasicConnMgr 的配置和状态数据

type DecayerCfg

type DecayerCfg struct {
	Resolution time.Duration // 分辨率
	Clock      clock.Clock   // 时钟实例
}

DecayerCfg 是衰减器的配置对象

func (*DecayerCfg) WithDefaults

func (cfg *DecayerCfg) WithDefaults() *DecayerCfg

WithDefaults 为 DecayerConfig 实例写入默认值,并返回自身以支持链式调用

cfg := (&DecayerCfg{}).WithDefaults()
cfg.Resolution = 30 * time.Second
t := NewDecayer(cfg, cm)

type Option

type Option func(*config) error

Option 表示基础连接管理器的配置选项函数 参数:

  • *config: 配置对象指针

返回值:

  • error: 配置错误信息

func DecayerConfig

func DecayerConfig(opts *DecayerCfg) Option

DecayerConfig 应用衰减器的配置 参数:

  • opts: 衰减器配置选项

返回值:

  • Option: 配置选项函数

func WithClock

func WithClock(c clock.Clock) Option

WithClock 设置内部时钟实现 参数:

  • c: 时钟实现对象

返回值:

  • Option: 配置选项函数

func WithEmergencyTrim

func WithEmergencyTrim(enable bool) Option

WithEmergencyTrim 用于在内存紧急情况下启用连接修剪的选项 参数:

  • enable: bool,是否启用紧急修剪

返回值:

  • Option: 配置选项函数

func WithGracePeriod

func WithGracePeriod(p time.Duration) Option

WithGracePeriod 设置宽限期 宽限期是新打开的连接在被修剪之前给予的时间 参数:

  • p: 宽限期时长

返回值:

  • Option: 配置选项函数

func WithSilencePeriod

func WithSilencePeriod(p time.Duration) Option

WithSilencePeriod 设置静默期 如果连接数量超过高水位线,连接管理器将在每个静默期执行一次清理 参数:

  • p: 静默期时长

返回值:

  • Option: 配置选项函数

Jump to

Keyboard shortcuts

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