package core import ( "blazing/common/socket/cmd" "blazing/common/socket/handler" "bytes" "github.com/lunixbochs/struc" "github.com/panjf2000/gnet" ) func SendError(cmd cmd.EnumCommandID, data any) { //TODO发送错误码的实现 //序列化结构体取错误码,然后构造错误结构 //SEND ERROR 方法,通过error tag取到标签,然后error库内取参数 } func SendPack(c gnet.Conn, cmd cmd.EnumCommandID, data any) { //TODO 待测试 //t := reflect.TypeOf(data) // var datar []byte // var iserror uint32 = 0 // switch t.Kind() { // case reflect.Slice: // datar = data.([]byte) // //p.Conn.Write(p.pack(cmd, data.([]byte))) //写入数据 // case reflect.Struct: // var data1 bytes.Buffer // struc.Pack(&data1, &data) // datar = data1.Bytes() // // p.Conn.Write(p.pack(cmd, data)) // case reflect.Uint32: //说明是错误码 // iserror = data.(uint32) // default: // // 可选:处理 nil 数据情况,直接返回 // datar = nil // return // } //c.Write(pack(packhead(userid uint32, cmd cmd.EnumCommandID, data []byte, iserror uint32))) } func Pack(userid uint32, cmd cmd.EnumCommandID, data []byte, iserror uint32) []byte { //组包 head1 := handler.TomeeHeader{ Len: uint32(len(data) + 17), CMD: uint32(cmd), Version: "7", UserID: userid, Result: iserror, Data: data, } if iserror != 0 { //如果存在错误码 head1.Data = nil } var data1 bytes.Buffer struc.Pack(&data1, &head1) return data1.Bytes() }