Documentation
¶
Index ¶
- func FromQuicMultiaddr(addr ma.Multiaddr) (*net.UDPAddr, quic.Version, error)
- func ToQuicMultiaddr(na net.Addr, version quic.Version) (ma.Multiaddr, error)
- func WithAssociation(ctx context.Context, association any) context.Context
- type ConnManager
- func (c *ConnManager) ClientConfig() *quic.Config
- func (c *ConnManager) Close() error
- func (c *ConnManager) DialQUIC(ctx context.Context, raddr ma.Multiaddr, tlsConf *tls.Config, ...) (quic.Connection, error)
- func (c *ConnManager) ListenQUIC(addr ma.Multiaddr, tlsConf *tls.Config, ...) (Listener, error)
- func (c *ConnManager) ListenQUICAndAssociate(association any, addr ma.Multiaddr, tlsConf *tls.Config, ...) (Listener, error)
- func (c *ConnManager) Protocols() []int
- func (c *ConnManager) SharedNonQUICPacketConn(network string, laddr *net.UDPAddr) (net.PacketConn, error)
- func (c *ConnManager) TransportForDial(network string, raddr *net.UDPAddr) (refCountedQuicTransport, error)
- func (c *ConnManager) TransportWithAssociationForDial(association any, network string, raddr *net.UDPAddr) (refCountedQuicTransport, error)
- type Listener
- type Option
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func FromQuicMultiaddr ¶
FromQuicMultiaddr 从多地址中解析出UDP地址和QUIC版本 参数:
- addr: ma.Multiaddr 多地址
返回值:
- *net.UDPAddr UDP地址
- quic.Version QUIC协议版本
- error 错误信息
func ToQuicMultiaddr ¶
ToQuicMultiaddr 将网络地址和QUIC版本转换为多地址 参数:
- na: net.Addr 网络地址
- version: quic.Version QUIC协议版本
返回值:
- ma.Multiaddr 转换后的多地址
- error 错误信息
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) 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 作为注册器