fix: kcp 协议内部日志细节
This commit is contained in:
@@ -3,6 +3,7 @@ package server
|
||||
import (
|
||||
"fmt"
|
||||
"sync"
|
||||
"time"
|
||||
|
||||
kcp "github.com/xtaci/kcp-go/v5"
|
||||
|
||||
@@ -21,11 +22,21 @@ func WithKCPLogger(logger latencylog.Logger) KCPOption {
|
||||
}
|
||||
}
|
||||
|
||||
// WithKCPSessionStatsLogger 为 KCP hub 注入会话统计日志器。
|
||||
func WithKCPSessionStatsLogger(logger transport.KCPSessionStatsLogger, interval time.Duration) KCPOption {
|
||||
return func(hub *KCPHub) {
|
||||
hub.sessionStatsLogger = logger
|
||||
hub.sessionStatsInterval = interval
|
||||
}
|
||||
}
|
||||
|
||||
// KCPHub 管理已注册 peer 的 KCP 会话,并负责在它们之间转发消息。
|
||||
type KCPHub struct {
|
||||
mu sync.RWMutex
|
||||
peers map[string]*transport.KCPConn
|
||||
logger latencylog.Logger
|
||||
mu sync.RWMutex
|
||||
peers map[string]*transport.KCPConn
|
||||
logger latencylog.Logger
|
||||
sessionStatsLogger transport.KCPSessionStatsLogger
|
||||
sessionStatsInterval time.Duration
|
||||
}
|
||||
|
||||
// NewKCPHub 创建一个空的 KCP 连接中心。
|
||||
@@ -57,6 +68,7 @@ func (h *KCPHub) ServeSession(session *kcp.UDPSession) error {
|
||||
conn, err := transport.NewKCPConn(
|
||||
session,
|
||||
transport.WithKCPLogger(h.logger, latencylog.NodeRoleServer, "hub"),
|
||||
transport.WithKCPSessionStatsLogger(h.sessionStatsLogger, h.sessionStatsInterval),
|
||||
)
|
||||
if err != nil {
|
||||
_ = session.Close()
|
||||
|
||||
Reference in New Issue
Block a user