quicreuse

package
v0.0.2 Latest Latest
Warning

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

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

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func FromQuicMultiaddr

func FromQuicMultiaddr(addr ma.Multiaddr) (*net.UDPAddr, quic.Version, error)

FromQuicMultiaddr 从多地址中解析出UDP地址和QUIC版本 参数:

  • addr: ma.Multiaddr 多地址

返回值:

  • *net.UDPAddr UDP地址
  • quic.Version QUIC协议版本
  • error 错误信息

func ToQuicMultiaddr

func ToQuicMultiaddr(na net.Addr, version quic.Version) (ma.Multiaddr, error)

ToQuicMultiaddr 将网络地址和QUIC版本转换为多地址 参数:

  • na: net.Addr 网络地址
  • version: quic.Version QUIC协议版本

返回值:

  • ma.Multiaddr 转换后的多地址
  • error 错误信息

func WithAssociation

func WithAssociation(ctx context.Context, association any) context.Context

WithAssociation 返回一个带有给定关联的新上下文 参数:

  • ctx: context.Context 上下文
  • association: any 关联对象

返回值:

  • context.Context 新的上下文

Types

type ConnManager

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

ConnManager 管理 QUIC 连接和监听器的复用 参数:

  • reuseUDP4: *reuse UDP4 连接复用器
  • reuseUDP6: *reuse UDP6 连接复用器
  • enableReuseport: bool 是否启用端口复用
  • enableMetrics: bool 是否启用指标收集
  • registerer: prometheus.Registerer Prometheus 注册器
  • serverConfig: *quic.Config 服务端配置
  • clientConfig: *quic.Config 客户端配置
  • quicListenersMu: sync.Mutex 监听器映射锁
  • quicListeners: map[string]quicListenerEntry 监听器映射表
  • srk: quic.StatelessResetKey 无状态重置密钥
  • tokenKey: quic.TokenGeneratorKey 令牌生成密钥

func NewConnManager

func NewConnManager(statelessResetKey quic.StatelessResetKey, tokenKey quic.TokenGeneratorKey, opts ...Option) (*ConnManager, error)

NewConnManager 创建一个新的连接管理器 参数:

  • statelessResetKey: quic.StatelessResetKey 无状态重置密钥
  • tokenKey: quic.TokenGeneratorKey 令牌生成密钥
  • opts: ...Option 配置选项

返回值:

  • *ConnManager 连接管理器
  • error 错误信息

func (*ConnManager) ClientConfig

func (c *ConnManager) ClientConfig() *quic.Config

ClientConfig 返回客户端配置 返回值:

  • *quic.Config 客户端配置

func (*ConnManager) Close

func (c *ConnManager) Close() error

Close 关闭连接管理器 返回值:

  • error 错误信息

func (*ConnManager) DialQUIC

func (c *ConnManager) DialQUIC(ctx context.Context, raddr ma.Multiaddr, tlsConf *tls.Config, allowWindowIncrease func(conn quic.Connection, delta uint64) bool) (quic.Connection, error)

DialQUIC 建立 QUIC 连接 参数:

  • ctx: context.Context 上下文
  • raddr: ma.Multiaddr 远程地址
  • tlsConf: *tls.Config TLS 配置
  • allowWindowIncrease: func(conn quic.Connection, delta uint64) bool 窗口增长控制函数

返回值:

  • quic.Connection QUIC 连接
  • error 错误信息

func (*ConnManager) ListenQUIC

func (c *ConnManager) ListenQUIC(addr ma.Multiaddr, tlsConf *tls.Config, allowWindowIncrease func(conn quic.Connection, delta uint64) bool) (Listener, error)

ListenQUIC 在指定地址上监听 QUIC 连接 参数:

  • addr: ma.Multiaddr 监听地址
  • tlsConf: *tls.Config TLS 配置
  • allowWindowIncrease: func(conn quic.Connection, delta uint64) bool 窗口增长控制函数

返回值:

  • Listener 监听器
  • error 错误信息

func (*ConnManager) ListenQUICAndAssociate

func (c *ConnManager) ListenQUICAndAssociate(association any, addr ma.Multiaddr, tlsConf *tls.Config, allowWindowIncrease func(conn quic.Connection, delta uint64) bool) (Listener, error)

ListenQUICAndAssociate 返回一个 QUIC 监听器并将底层传输与给定的关联关系相关联 参数:

  • association: any 关联对象
  • addr: ma.Multiaddr 监听地址
  • tlsConf: *tls.Config TLS 配置
  • allowWindowIncrease: func(conn quic.Connection, delta uint64) bool 窗口增长控制函数

返回值:

  • Listener 监听器
  • error 错误信息

func (*ConnManager) Protocols

func (c *ConnManager) Protocols() []int

Protocols 返回支持的协议列表 返回值:

  • []int 协议 ID 列表

func (*ConnManager) SharedNonQUICPacketConn

func (c *ConnManager) SharedNonQUICPacketConn(network string, laddr *net.UDPAddr) (net.PacketConn, error)

SharedNonQUICPacketConn 返回一个共享的非 QUIC 数据包连接 参数:

  • network: string 网络类型
  • laddr: *net.UDPAddr 本地地址

返回值:

  • net.PacketConn 数据包连接
  • error 错误信息

func (*ConnManager) TransportForDial

func (c *ConnManager) TransportForDial(network string, raddr *net.UDPAddr) (refCountedQuicTransport, error)

TransportForDial 为拨号创建传输层 参数:

  • network: string 网络类型
  • raddr: *net.UDPAddr 远程地址

返回值:

  • refCountedQuicTransport 传输层
  • error 错误信息

func (*ConnManager) TransportWithAssociationForDial

func (c *ConnManager) TransportWithAssociationForDial(association any, network string, raddr *net.UDPAddr) (refCountedQuicTransport, error)

TransportWithAssociationForDial 返回用于拨号的 QUIC 传输层,优先使用具有给定关联的传输层 参数:

  • association: any 关联对象
  • network: string 网络类型
  • raddr: *net.UDPAddr 远程地址

返回值:

  • refCountedQuicTransport 传输层
  • error 错误信息

type Listener

type Listener interface {
	Accept(context.Context) (quic.Connection, error)
	Addr() net.Addr
	Multiaddrs() []ma.Multiaddr
	io.Closer
}

Listener 定义了 QUIC 监听器接口 参数:

  • Accept: 接受新的连接
  • Addr: 返回监听地址
  • Multiaddrs: 返回多地址列表
  • io.Closer: 关闭监听器

type Option

type Option func(*ConnManager) error

Option 定义了一个函数类型,用于配置 ConnManager 参数:

  • *ConnManager: 连接管理器指针

返回值:

  • error: 配置过程中的错误信息

func DisableReuseport

func DisableReuseport() Option

DisableReuseport 禁用端口重用功能 返回值:

  • Option: 返回一个配置函数,用于禁用端口重用

func EnableMetrics

func EnableMetrics(reg prometheus.Registerer) Option

EnableMetrics 启用 Prometheus 指标收集 参数:

  • reg: prometheus.Registerer Prometheus 注册器

返回值:

  • Option: 返回一个配置函数,用于启用指标收集

注意:

  • 如果 reg 为 nil,将使用 prometheus.DefaultRegisterer 作为注册器

Jump to

Keyboard shortcuts

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