fix: transport.UDPConn 新增了 WithUDPLinuxTimestamping(false) 开关

This commit is contained in:
2026-03-27 01:59:17 +08:00
parent 5b231141a7
commit 8cec6a0766
7 changed files with 154 additions and 37 deletions

View File

@@ -28,23 +28,32 @@ func WithUDPTXTimestampDebugLogger(logger transport.TXTimestampDebugLogger) UDPO
}
}
// WithUDPLinuxTimestamping controls whether the UDP hub enables Linux timestamping.
func WithUDPLinuxTimestamping(enabled bool) UDPOption {
return func(hub *UDPHub) {
hub.linuxTimestampingEnabled = enabled
}
}
// UDPHub 管理通过 UDP 注册的 peer并负责在它们之间转发消息。
type UDPHub struct {
mu sync.RWMutex
peers map[string]*net.UDPAddr
addrs map[string]string
conn *transport.UDPConn
logger latencylog.Logger
txTimestampDebugLogger transport.TXTimestampDebugLogger
conn *transport.UDPConn
logger latencylog.Logger
txTimestampDebugLogger transport.TXTimestampDebugLogger
linuxTimestampingEnabled bool
}
// NewUDPHub 创建一个新的 UDP 连接中心。
func NewUDPHub(conn *net.UDPConn, opts ...UDPOption) (*UDPHub, error) {
hub := &UDPHub{
peers: make(map[string]*net.UDPAddr),
addrs: make(map[string]string),
logger: latencylog.NoopLogger{},
peers: make(map[string]*net.UDPAddr),
addrs: make(map[string]string),
logger: latencylog.NoopLogger{},
linuxTimestampingEnabled: true,
}
for _, opt := range opts {
@@ -59,6 +68,7 @@ func NewUDPHub(conn *net.UDPConn, opts ...UDPOption) (*UDPHub, error) {
conn,
nil,
transport.WithUDPLogger(hub.logger, latencylog.NodeRoleServer, "hub"),
transport.WithUDPLinuxTimestamping(hub.linuxTimestampingEnabled),
transport.WithUDPTXTimestampDebugLogger(hub.txTimestampDebugLogger),
)
if err != nil {