修改底层

This commit is contained in:
1
2025-10-27 09:36:49 +00:00
parent 225aff42c5
commit 448943ca75
8 changed files with 223 additions and 129 deletions

View File

@@ -1,8 +1,6 @@
package controller
import (
"blazing/common/socket/errorcode"
"blazing/cool"
"blazing/logic/service/player"
@@ -10,14 +8,12 @@ import (
"bytes"
"context"
"fmt"
"reflect"
"github.com/gogf/gf/v2/os/gcmd"
"github.com/gogf/gf/v2/os/glog"
"github.com/gogf/gf/v2/util/gconv"
"github.com/lunixbochs/struc"
"github.com/panjf2000/gnet/v2"
)
var Maincontroller = NewController() //注入service
@@ -126,73 +122,3 @@ func getcmd(t reflect.Type) []uint32 {
}
return []uint32{0}
}
// 遍历结构体方法并执行RECV_cmd
func Recv(c gnet.Conn, data player.TomeeHeader) {
cmdlister, ok := cool.CmdCache.Load(data.CMD)
if !ok {
glog.Debug(context.Background(), data.CMD, "cmd未注册")
return //TODO 待实现cmd未注册
}
// fmt.Println(cmdlister)
glog.Debug(context.Background(), "接收数据", data.UserID, data.CMD)
params := []reflect.Value{}
//funct := cmdlister.Type().NumIn()
// 如果需要可设置的变量(用于修改值),创建指针并解引用
ptrValue := reflect.New(cmdlister.Type().In(0).Elem())
tt1 := ptrValue.Elem().Addr().Interface()
// fmt.Println(tt1)
err := struc.Unpack(bytes.NewBuffer(data.Data), tt1)
if err != nil {
fmt.Println(err)
}
//fmt.Println(tt1)
ptrValue1 := ptrValue.Elem().Addr()
// 设置 Name 字段
nameField := ptrValue.Elem().Field(0) //首个为header
if nameField.IsValid() && nameField.CanSet() {
nameField.Set(reflect.ValueOf(data))
}
if cmdlister.Type().In(1) == reflect.TypeOf(&player.Player{}) {
t := player.GetPlayer(c, data.UserID)
// fmt.Println(data.CMD, "接收 变量的地址 ", &t.Info, t.Info.UserID)
params = append(params, ptrValue1, reflect.ValueOf(t))
} else {
params = append(params, ptrValue1, reflect.ValueOf(c))
}
ret := cmdlister.Call(params)
if len(ret) <= 0 { //如果判断没有参数,那就说明这个包没有返回参数
return
}
aa, ok := ret[1].Interface().(errorcode.ErrorCode) //判断错误
data.Result = uint32(aa)
if aa == -1 {
return
}
t := player.GetPlayer(c, data.UserID)
if ok && aa != 0 { //这里实现回复错误包
cool.Loger.Error(context.Background(), aa.Code())
t.SendPack(data.Pack(nil))
return
}
data.Version = "7"
t.SendPack(data.Pack(ret[0].Interface()))
}