"refactor(socket): 重构TomeeHeader结构,新增Ret方法并优化控制器返回逻辑"
This commit is contained in:
5
common/data/entity/BlazingI.go
Normal file
5
common/data/entity/BlazingI.go
Normal file
@@ -0,0 +1,5 @@
|
||||
package entity
|
||||
|
||||
type Blazingservice interface {
|
||||
Ret() []byte
|
||||
}
|
||||
@@ -21,6 +21,7 @@ type TomeeHeader struct {
|
||||
|
||||
Result uint32 `json:"result"`
|
||||
Data []byte `json:"data" struc:"skip"` //组包忽略此字段// struc:"[0]pad"
|
||||
Return []byte `struc:"[0]pad"` //返回记录
|
||||
}
|
||||
|
||||
func NewTomeeHeader() *TomeeHeader {
|
||||
@@ -113,6 +114,11 @@ func (h *TomeeHeader) Pack(data any) []byte { //组包
|
||||
|
||||
return by.Bytes()
|
||||
|
||||
}
|
||||
func (h *TomeeHeader) Ret() []byte { //默认返回方法
|
||||
|
||||
return h.Return
|
||||
|
||||
}
|
||||
|
||||
// MergeBytes 将多个字节数组合并为一个
|
||||
|
||||
@@ -196,9 +196,25 @@ func Recv(c gnet.Conn, data handler.TomeeHeader) {
|
||||
params = append(params, ptrValue1, reflect.ValueOf(c))
|
||||
}
|
||||
|
||||
ret := cmdlister.Call(params)
|
||||
cmdlister.Call(params)
|
||||
|
||||
r := entity.Conn{c}
|
||||
r.SendPack(ret[0].Interface().([]byte))
|
||||
r := entity.Conn{MainConn: c}
|
||||
// // 遍历结构体字段
|
||||
// // fmt.Printf("结构体 %s 的字段信息:\n", t.Name())
|
||||
// for i := 0; i < ptrValue1.Type().NumField(); i++ {
|
||||
// field := ptrValue1.Type().Field(i)
|
||||
|
||||
// if field.Name == "Ret" { //判断Ret
|
||||
|
||||
// }
|
||||
|
||||
// }
|
||||
t, ok := ptrValue1.Interface().(entity.Blazingservice)
|
||||
|
||||
if ok {
|
||||
r.SendPack(t.Ret())
|
||||
t.Ret()
|
||||
}
|
||||
//r.SendPack(ret[0].Interface().([]byte))
|
||||
|
||||
}
|
||||
|
||||
@@ -2,21 +2,14 @@ package controller
|
||||
|
||||
import (
|
||||
"blazing/logic/service/server"
|
||||
"fmt"
|
||||
|
||||
"github.com/panjf2000/gnet/v2"
|
||||
)
|
||||
|
||||
// 处理命令: 105
|
||||
func (h Controller) GetServer(data server.SidInfo, c gnet.Conn) []byte { //这个时候player应该是空的
|
||||
|
||||
//fmt.Println(data.Sid)
|
||||
|
||||
ret := server.NewCommendSvrInfo()
|
||||
|
||||
ret.ServerList = server.GetServerInfoList()
|
||||
|
||||
tt := data.Head.Pack(ret)
|
||||
//fmt.Println(hex.EncodeToString(tt))
|
||||
// c.Write(tt)
|
||||
return tt
|
||||
func (h Controller) GetServer(data server.SidInfo, c gnet.Conn) { //这个时候player应该是空的
|
||||
t := data.Init() //初始化方法,然后可以返回默认返回值修改
|
||||
fmt.Println(t)
|
||||
//return //TODO 这里待实现改成接口调用Ret方法
|
||||
}
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
package server
|
||||
|
||||
import (
|
||||
"blazing/common/socket/handler"
|
||||
"blazing/cool"
|
||||
"blazing/modules/base/service"
|
||||
"blazing/modules/blazing/model"
|
||||
@@ -8,8 +9,27 @@ import (
|
||||
"github.com/butoften/array"
|
||||
)
|
||||
|
||||
//var _ entity.Blazingservice = (*SidInfo)(nil)
|
||||
|
||||
type SidInfo struct { //这里直接使用组合来实现将传入的原始头部数据和结构体参数序列化
|
||||
Head handler.TomeeHeader `cmd:"105" struc:"[0]pad"` //玩家登录
|
||||
|
||||
Sid []byte `struc:"[20]byte"` // 登录会话ID,固定长度16字节
|
||||
ret []byte `struc:"[0]pad"`
|
||||
// NotLogin uint32 `error="10001"|struc:"[0]pad"` //返回错误码 ,不序列化,仅作为错误码
|
||||
// ErrorPassWord uint32 `struc:"[0]pad"`
|
||||
}
|
||||
|
||||
func (s SidInfo) Init() *commendSvrInfo { //默认返回方法
|
||||
r := newCommendSvrInfo()
|
||||
r.ServerList = GetServerInfoList()
|
||||
s.Head.Return = s.Head.Pack(r) //这里保存一下,用来给调用
|
||||
return r
|
||||
|
||||
}
|
||||
|
||||
// CommendSvrInfo 初始连接请求信息结构体
|
||||
type CommendSvrInfo struct {
|
||||
type commendSvrInfo struct {
|
||||
//Handler handler.TomeeHeader //` struc:"[0]pad"` //消息头 ,这里为传入的头部数据,遍历此头部实现解析CommendSvrInfo
|
||||
MaxOnlineID uint32 `struc:"sizeof=ServerList"` // 最大连接数
|
||||
IsVip uint32 // 建议为0
|
||||
@@ -21,8 +41,11 @@ type CommendSvrInfo struct {
|
||||
BlackInfo []BlackInfo // 黑名单id
|
||||
}
|
||||
|
||||
func NewCommendSvrInfo() *CommendSvrInfo {
|
||||
return &CommendSvrInfo{
|
||||
// NewCommendSvrInfo 创建并返回一个新的 commendSvrInfo 结构体实例
|
||||
// 返回的实例包含初始化的 ServerList、FriendInfo 和 BlackInfo 切片
|
||||
// IsVip 和 ServerInfoLen 字段被初始化为 0
|
||||
func newCommendSvrInfo() *commendSvrInfo {
|
||||
return &commendSvrInfo{
|
||||
// Handler: handler.TomeeHeader{},
|
||||
// MaxOnlineID: 100,
|
||||
IsVip: 0,
|
||||
|
||||
@@ -1,11 +0,0 @@
|
||||
package server
|
||||
|
||||
import "blazing/common/socket/handler"
|
||||
|
||||
type SidInfo struct { //这里直接使用组合来实现将传入的原始头部数据和结构体参数序列化
|
||||
Head handler.TomeeHeader `cmd:"105" struc:"[0]pad"` //玩家登录
|
||||
|
||||
Sid []byte `struc:"[20]byte"` // 登录会话ID,固定长度16字节
|
||||
// NotLogin uint32 `error="10001"|struc:"[0]pad"` //返回错误码 ,不序列化,仅作为错误码
|
||||
// ErrorPassWord uint32 `struc:"[0]pad"`
|
||||
}
|
||||
Reference in New Issue
Block a user