refactor(logic): 重构逻辑处理和错误处理机制
- 新增 Conn 结构体的 NewConn 工厂方法 - 优化 Controller 中的 Recv 方法,增加错误处理逻辑 - 修改 GetServer、Login、MapHot 等方法的返回值类型 - 重构 SystemTimeInfo 方法,使用新的 OutInfo 接口 - 更新 CommendSvrInfo 结构体和相关方法 - 统一错误处理机制,使用新的 OutInfo 接口
This commit is contained in:
@@ -13,6 +13,7 @@ import (
|
||||
"fmt"
|
||||
"reflect"
|
||||
|
||||
"github.com/gogf/gf/v2/frame/g"
|
||||
"github.com/gogf/gf/v2/os/gcmd"
|
||||
"github.com/gogf/gf/v2/os/glog"
|
||||
"github.com/gogf/gf/v2/util/gconv"
|
||||
@@ -96,10 +97,6 @@ func init() { //默认初始化扫描
|
||||
glog.Warning(context.Background(), "方法参数必须是结构体", method.Name, "跳过注册")
|
||||
continue
|
||||
}
|
||||
// if !cmd.Isexist(cmd.CommandID, cmd.EnumCommandID(func_cmd)) {
|
||||
// fmt.Println("ID方法存在cmd未注册", func_cmd)
|
||||
|
||||
// }
|
||||
|
||||
if cool.Config.PortBL == 0 && func_cmd > 1000 { //判断login服务器
|
||||
break
|
||||
@@ -144,13 +141,10 @@ func getcmd(t reflect.Type) uint32 {
|
||||
return gconv.Uint32(field.Tag.Get("cmd"))
|
||||
|
||||
}
|
||||
// fmt.Printf(" 类型: %v\n", field.Type)
|
||||
// fmt.Printf(" 标签: %q\n", field.Tag)
|
||||
|
||||
// 递归处理嵌套结构体
|
||||
if field.Type.Kind() == reflect.Struct ||
|
||||
(field.Type.Kind() == reflect.Ptr && field.Type.Elem().Kind() == reflect.Struct) {
|
||||
fmt.Println(" 嵌套结构体字段:")
|
||||
|
||||
nestedType := field.Type
|
||||
if nestedType.Kind() == reflect.Ptr {
|
||||
nestedType = nestedType.Elem()
|
||||
@@ -207,19 +201,26 @@ func Recv(c gnet.Conn, data handler.TomeeHeader) {
|
||||
params = append(params, ptrValue1, reflect.ValueOf(c))
|
||||
}
|
||||
|
||||
ret :=cmdlister.Call(params)
|
||||
ret := cmdlister.Call(params)
|
||||
|
||||
r := entity.Conn{MainConn: c}
|
||||
r := entity.NewConn(c) //这里实现新增客户端
|
||||
|
||||
if len(ret)<=0 {
|
||||
if len(ret) <= 0 { //如果判断没有参数,那就说明这个包没有返回参数
|
||||
return
|
||||
}
|
||||
a,ok:=ret[0].Interface().([]byte)
|
||||
if ok {
|
||||
r.SendPack(a)
|
||||
|
||||
aa, ok := ret[1].Interface().(service.OutInfo) //判断错误
|
||||
|
||||
if ok && aa != nil { //这里实现回复错误包
|
||||
|
||||
g.Log().Error(context.Background(), aa.Error(), aa.Code())
|
||||
|
||||
data.Result = uint32(aa.Code())
|
||||
r.SendPack(data.Pack(nil))
|
||||
return
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
r.SendPack(data.Pack(ret[0].Interface()))
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -1,14 +1,17 @@
|
||||
package controller
|
||||
|
||||
import (
|
||||
"blazing/logic/service"
|
||||
"blazing/logic/service/server"
|
||||
|
||||
"github.com/panjf2000/gnet/v2"
|
||||
)
|
||||
|
||||
// 处理命令: 105
|
||||
func (h Controller) GetServer(data *server.SidInfo, c gnet.Conn) { //这个时候player应该是空的
|
||||
data.Def() //初始化方法,然后可以返回默认返回值修改
|
||||
func (h Controller) GetServer(data *server.SidInfo, c gnet.Conn) (result *server.CommendSvrInfo, err service.OutInfo) { //这个时候player应该是空的
|
||||
result = server.NewCommendSvrInfo()
|
||||
result.ServerList = server.GetServerInfoList()
|
||||
return
|
||||
|
||||
//return //TODO 这里待实现改成接口调用Ret方法
|
||||
}
|
||||
|
||||
@@ -4,13 +4,13 @@ import (
|
||||
"blazing/common/data/share"
|
||||
"blazing/logic/service"
|
||||
"blazing/logic/service/login"
|
||||
"time"
|
||||
"blazing/logic/service/maps"
|
||||
|
||||
"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) (result *maps.MapHotOutboundInfo, err service.OutInfo) { //这个时候player应该是空的
|
||||
|
||||
if tt := data.CheakSession(); tt { //说明sid正确
|
||||
h.RPCClient.Kick(data.Head.UserID) //先踢人
|
||||
@@ -20,11 +20,8 @@ func (h *Controller) Login(data *login.LoginSidInfo, c gnet.Conn) []byte { //这
|
||||
|
||||
share.ShareManager.SetUserOnline(data.Head.UserID, h.Port) //设置用户登录服务器
|
||||
t.CompleteLogin() //通知客户端登录成功
|
||||
<-time.After(3000)
|
||||
return data.Def()
|
||||
c.Write(data.Def()) //TODO 这里实现fake数据
|
||||
|
||||
}
|
||||
//data.Def()
|
||||
//return //t1, _ := hex.DecodeString("000186A6683F89CF6E69656F0000000000000000000000000008000F00000000000000000000000000000000000000000000000000000001000001DB0000018B000000000000A8C000000000000000000000000000000000000000080001388000000001000000017FFFFFFF00000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF03030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030000000000000000000000000000000000000064000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000001FFFFFFFF000000004E4F4E4F0000000000000000000000000000000000000001000000010000000100000001000000010000000100000001000000000003030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030000000100000064000000000000000000000000000000000000001F000000000000006400000000000093F4000093F4000000D5000000F7000000AD00000088000000920000008C0000009C00000000000000000000000000000000000000000000000000000004000027900000001B00004E6200000014000028380000002800004E3E0000002368493DC60000000000000000000000000000000000000000000100000000000000A937000007D1000186A600000000000186A66E69656F00000000000000000000000000000000000000000000000F0000000000000000000001DB0000018B0000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFF0000000000000001000000000000000000000000000000000000000000000000000000000000000000000000")
|
||||
return nil
|
||||
// return t1
|
||||
return
|
||||
}
|
||||
|
||||
@@ -2,10 +2,11 @@ package controller
|
||||
|
||||
import (
|
||||
"blazing/common/data/entity"
|
||||
"blazing/logic/service"
|
||||
"blazing/logic/service/maps"
|
||||
)
|
||||
|
||||
func (h Controller) MapHot(data *maps.MapHotInboundInfo, c *entity.Player) (result *maps.MapHotOutboundInfo, err error) {
|
||||
func (h Controller) MapHot(data *maps.MapHotInboundInfo, c *entity.Player) (result *maps.MapHotOutboundInfo, err service.OutInfo) {
|
||||
|
||||
data.Def()
|
||||
result = &maps.MapHotOutboundInfo{
|
||||
@@ -13,4 +14,5 @@ func (h Controller) MapHot(data *maps.MapHotInboundInfo, c *entity.Player) (resu
|
||||
HotInfos: make([]maps.MapHotInfo, 0),
|
||||
}
|
||||
|
||||
return
|
||||
}
|
||||
|
||||
@@ -2,11 +2,11 @@ package controller
|
||||
|
||||
import (
|
||||
"blazing/common/data/entity"
|
||||
"blazing/logic/service/system"
|
||||
"blazing/logic/service"
|
||||
"blazing/logic/service/SystemTime"
|
||||
)
|
||||
|
||||
func (h Controller) SystemTimeInfo(data *system.SystemTimeInfo, c *entity.Player) {
|
||||
data.Def()
|
||||
//fmt.Println("登录成功")
|
||||
//log.Printf("任务 %s 执行中,已登录状态: %v\n", , lw.IsLoggedIn())
|
||||
func (h Controller) SystemTimeInfo(data *SystemTime.InInfo, c *entity.Player) (result *SystemTime.OutInfo, err service.OutInfo) {
|
||||
result = SystemTime.NewOutInfo()
|
||||
return
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user