From 0f914eb9b84a49beae1bbb99c3836d85a2f781a6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=98=94=E5=BF=B5?= <12574910+72wo@users.noreply.github.com> Date: Wed, 11 Feb 2026 11:58:34 +0800 Subject: [PATCH] 1 --- common/cool/global.go | 2 ++ logic/controller/Controller.go | 8 +++++++- logic/service/player/pack.go | 1 - 3 files changed, 9 insertions(+), 2 deletions(-) diff --git a/common/cool/global.go b/common/cool/global.go index 3a1dad412..7c386a131 100644 --- a/common/cool/global.go +++ b/common/cool/global.go @@ -22,6 +22,8 @@ var ctx = context.TODO() type Cmd struct { Func reflect.Value //方法函数 Req reflect.Type //请求体 + // 新增:预缓存的req创建函数(返回结构体指针) + NewReqFunc func() interface{} //Res reflect.Value //返回体 } diff --git a/logic/controller/Controller.go b/logic/controller/Controller.go index a61479b6f..90ca764c2 100644 --- a/logic/controller/Controller.go +++ b/logic/controller/Controller.go @@ -89,9 +89,15 @@ func Init(isGame bool) { cmdInfo := cool.Cmd{ Func: methodValue, Req: methodValue.Type().In(0).Elem(), + // Res: , // TODO 待实现对不同用户初始化方法以取消全局cmdcache } - + // 获取req的实际类型(如ReqLogin) + reqType := reflect.TypeOf(cmdInfo.Req).Elem() + // 预编译创建req实例的函数:返回结构体指针 + cmdInfo.NewReqFunc = func() interface{} { + return reflect.New(reqType).Interface() + } cool.CmdCache[cmd] = cmdInfo // if exists { // 方法已存在 // glog.Error(context.Background(), "命令处理方法已存在,跳过注册", cmd, method.Name) diff --git a/logic/service/player/pack.go b/logic/service/player/pack.go index 65364420a..b580c275f 100644 --- a/logic/service/player/pack.go +++ b/logic/service/player/pack.go @@ -61,7 +61,6 @@ func (h *ClientData) OnEvent(data common.TomeeHeader) { } else { cool.Logger.Error(context.TODO(), "panic 错误:", err) } - cool.Logger.Error(context.TODO(), "Recv 错误:", err) } }()