diff --git a/common/socket/handler/SocketHandler_Tomee.go b/common/socket/handler/SocketHandler_Tomee.go index 75965f376..e834bfb8f 100644 --- a/common/socket/handler/SocketHandler_Tomee.go +++ b/common/socket/handler/SocketHandler_Tomee.go @@ -120,6 +120,17 @@ func (h *TomeeHeader) Ret() []byte { //默认返回方法 return h.Return } +func (h *TomeeHeader) Set(T any) []byte { //默认返回方法 + h.Return = h.Pack(T) //这里保存一下,用来给调用 + return h.Return + +} + +// var _ Blazingservice = (*TomeeHeader)(nil) + +// type Blazingservice interface { +// Ret() []byte +// } // MergeBytes 将多个字节数组合并为一个 func MergeBytes(arrays ...[]byte) []byte { diff --git a/logic/controller/controller.go b/logic/controller/controller.go index 4bc353575..1f6663c97 100644 --- a/logic/controller/controller.go +++ b/logic/controller/controller.go @@ -173,7 +173,7 @@ func Recv(c gnet.Conn, data handler.TomeeHeader) { //funct := cmdlister.Type().NumIn() // 如果需要可设置的变量(用于修改值),创建指针并解引用 - ptrValue := reflect.New(cmdlister.Type().In(0)) + ptrValue := reflect.New(cmdlister.Type().In(0).Elem()) tt1 := ptrValue.Elem().Addr().Interface() // fmt.Println(tt1) @@ -182,7 +182,7 @@ func Recv(c gnet.Conn, data handler.TomeeHeader) { fmt.Println(err) } //fmt.Println(tt1) - ptrValue1 := ptrValue.Elem() + ptrValue1 := ptrValue.Elem().Addr() // 设置 Name 字段 nameField := ptrValue.Elem().Field(0) //首个为header if nameField.IsValid() && nameField.CanSet() { @@ -209,11 +209,24 @@ func Recv(c gnet.Conn, data handler.TomeeHeader) { // } // } - t, ok := ptrValue1.Interface().(Blazingservice) + // if cmdlister.Type().In(0).Implements(reflect.TypeOf((*Blazingservice)(nil)).Elem()) { + // fmt.Printf("参数 %d 是结构体且实现了 MyInterface 接口\n" ) + // tt1 - if ok && t.Ret() != nil { - r.SendPack(t.Ret()) - t.Ret() + // } else { + // fmt.Printf("参数 %d 是结构体但未实现 MyInterface 接口\n", i) + // } + aa := ptrValue1.Elem().Field(0).Addr().Interface() + + t := aa.(Blazingservice) + //st, ok := aa.(Blazingservice) + //fmt.Println(t.Ret()) + if t.Ret() != nil { + err := r.SendPack(t.Ret()) + if err != nil { + fmt.Println(err) + } + //t.Ret() } //r.SendPack(ret[0].Interface().([]byte)) diff --git a/logic/controller/getserver.go b/logic/controller/getserver.go index db0a10eb9..ae239307d 100644 --- a/logic/controller/getserver.go +++ b/logic/controller/getserver.go @@ -8,7 +8,7 @@ import ( ) // 处理命令: 105 -func (h Controller) GetServer(data server.SidInfo, c gnet.Conn) { //这个时候player应该是空的 +func (h Controller) GetServer(data *server.SidInfo, c gnet.Conn) { //这个时候player应该是空的 t := data.Init() //初始化方法,然后可以返回默认返回值修改 fmt.Println(t) //return //TODO 这里待实现改成接口调用Ret方法 diff --git a/logic/controller/login.go b/logic/controller/login.go index 3cfa8ab16..584fa788d 100644 --- a/logic/controller/login.go +++ b/logic/controller/login.go @@ -4,32 +4,22 @@ import ( "blazing/common/data/share" "blazing/logic/service" "blazing/logic/service/login" - "encoding/hex" - "fmt" "github.com/panjf2000/gnet/v2" ) // 处理命令: 1001 -func (h *Controller) Login(data login.LoginSidInfo, c gnet.Conn) []byte { //这个时候player应该是空的 +func (h *Controller) Login(data *login.LoginSidInfo, c gnet.Conn) { //这个时候player应该是空的 if tt := data.CheakSession(); tt { //说明sid正确 h.RPCClient.Kick(data.Head.UserID) //先踢人 // h.RPCClient.UserLogin(int32(h.Port), int32(data.Head.UserID)) //初始化用户登录 service.SetPlayer(c, data.Head.UserID) - + share.ShareManager.SetUserOnline(data.Head.UserID, h.Port) //设置用户登录服务器 } - - t1, _ := hex.DecodeString("0000045D37000003E9000186A600000000000186A6683F89CF6E69656F0000000000000000000000000008000F00000000000000000000000000000000000000000000000000000001000001DB0000018B000000000000A8C000000000000000000000000000000000000000080001388000000001000000017FFFFFFF00000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF03030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030000000000000000000000000000000000000064000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000001FFFFFFFF000000004E4F4E4F0000000000000000000000000000000000000001000000010000000100000001000000010000000100000001000000000003030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030000000100000064000000000000000000000000000000000000001F000000000000006400000000000093F4000093F4000000D5000000F7000000AD00000088000000920000008C0000009C00000000000000000000000000000000000000000000000000000004000027900000001B00004E6200000014000028380000002800004E3E0000002368493DC60000000000000000000000000000000000000000000100000000000000A937000007D1000186A600000000000186A66E69656F00000000000000000000000000000000000000000000000F0000000000000000000001DB0000018B0000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFF0000000000000001000000000000000000000000000000000000000000000000000000000000000000000000") - //t1 = t1[17:] - fmt.Println(t1[:40]) - data.Head.Version = "7" - data.Head.UserID = 99942 - data.Head.Result = 0 - fmt.Println(data.Head.Pack(t1[17:])[:40]) - return data.Head.Pack(t1[17:])[:40] + data.Init() //return //t1, _ := hex.DecodeString("000186A6683F89CF6E69656F0000000000000000000000000008000F00000000000000000000000000000000000000000000000000000001000001DB0000018B000000000000A8C000000000000000000000000000000000000000080001388000000001000000017FFFFFFF00000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF03030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030000000000000000000000000000000000000064000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000001FFFFFFFF000000004E4F4E4F0000000000000000000000000000000000000001000000010000000100000001000000010000000100000001000000000003030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030000000100000064000000000000000000000000000000000000001F000000000000006400000000000093F4000093F4000000D5000000F7000000AD00000088000000920000008C0000009C00000000000000000000000000000000000000000000000000000004000027900000001B00004E6200000014000028380000002800004E3E0000002368493DC60000000000000000000000000000000000000000000100000000000000A937000007D1000186A600000000000186A66E69656F00000000000000000000000000000000000000000000000F0000000000000000000001DB0000018B0000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFF0000000000000001000000000000000000000000000000000000000000000000000000000000000000000000") // return t1 diff --git a/logic/service/login/LoginSidInfo.go b/logic/service/login/LoginSidInfo.go index e56299646..f2567049c 100644 --- a/logic/service/login/LoginSidInfo.go +++ b/logic/service/login/LoginSidInfo.go @@ -16,6 +16,18 @@ type LoginSidInfo struct { //这里直接使用组合来实现将传入的原始 // ErrorPassWord uint32 `struc:"[0]pad"` } +func (s *LoginSidInfo) Init() []byte { //默认返回方法 + t1, _ := hex.DecodeString("0000045D37000003E9000186A600000000000186A6683F89CF6E69656F0000000000000000000000000008000F00000000000000000000000000000000000000000000000000000001000001DB0000018B000000000000A8C000000000000000000000000000000000000000080001388000000001000000017FFFFFFF00000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF03030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030000000000000000000000000000000000000064000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000001FFFFFFFF000000004E4F4E4F0000000000000000000000000000000000000001000000010000000100000001000000010000000100000001000000000003030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030000000100000064000000000000000000000000000000000000001F000000000000006400000000000093F4000093F4000000D5000000F7000000AD00000088000000920000008C0000009C00000000000000000000000000000000000000000000000000000004000027900000001B00004E6200000014000028380000002800004E3E0000002368493DC60000000000000000000000000000000000000000000100000000000000A937000007D1000186A600000000000186A66E69656F00000000000000000000000000000000000000000000000F0000000000000000000001DB0000018B0000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFF0000000000000001000000000000000000000000000000000000000000000000000000000000000000000000") + //t1 = t1[17:] + fmt.Println(t1[:40]) + s.Head.Version = "7" + s.Head.UserID = 99942 + s.Head.Result = 0 + //s //return data.Head.Pack(t1[17:])[:40] + s.Head.Set(t1[17:]) //返回传参 + return t1[:40] + +} func (l *LoginSidInfo) CheakSession() bool { // tt, _ := cool.CacheManager.Keys(context.Background()) //g.Dump(tt) diff --git a/logic/service/server/CommendSvrInfo.go b/logic/service/server/CommendSvrInfo.go index 1fc7dbcef..603bfca45 100644 --- a/logic/service/server/CommendSvrInfo.go +++ b/logic/service/server/CommendSvrInfo.go @@ -20,10 +20,10 @@ type SidInfo struct { //这里直接使用组合来实现将传入的原始头 // ErrorPassWord uint32 `struc:"[0]pad"` } -func (s SidInfo) Init() *commendSvrInfo { //默认返回方法 +func (s *SidInfo) Init() *commendSvrInfo { //默认返回方法 r := newCommendSvrInfo() r.ServerList = GetServerInfoList() - s.Head.Return = s.Head.Pack(r) //这里保存一下,用来给调用 + s.Head.Set(r) //返回传参 return r }