From c7d29893fee620a12cf3d51060c13214a5af1dfe Mon Sep 17 00:00:00 2001 From: liuxiaobo <1224730913@qq.com> Date: Tue, 27 May 2025 00:18:59 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E6=B6=88=E6=81=AF=E5=88=86?= =?UTF-8?q?=E5=8F=91=E5=99=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- processor/internal.pb.go | 277 ++++++++++++++++++++++++++++++++++++ processor/processor_test.go | 27 ++++ 2 files changed, 304 insertions(+) create mode 100644 processor/internal.pb.go create mode 100644 processor/processor_test.go diff --git a/processor/internal.pb.go b/processor/internal.pb.go new file mode 100644 index 0000000..6e6eec2 --- /dev/null +++ b/processor/internal.pb.go @@ -0,0 +1,277 @@ +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.36.6 +// protoc v6.31.0 +// source: internal.proto + +package processor + +import ( + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + reflect "reflect" + sync "sync" + unsafe "unsafe" +) + +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) + +type MsgId int32 + +const ( + MsgId_Unknown MsgId = 0 + MsgId_Internal MsgId = -1 // 内部消息id +) + +// Enum value maps for MsgId. +var ( + MsgId_name = map[int32]string{ + 0: "Unknown", + -1: "Internal", + } + MsgId_value = map[string]int32{ + "Unknown": 0, + "Internal": -1, + } +) + +func (x MsgId) Enum() *MsgId { + p := new(MsgId) + *p = x + return p +} + +func (x MsgId) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (MsgId) Descriptor() protoreflect.EnumDescriptor { + return file_internal_proto_enumTypes[0].Descriptor() +} + +func (MsgId) Type() protoreflect.EnumType { + return &file_internal_proto_enumTypes[0] +} + +func (x MsgId) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use MsgId.Descriptor instead. +func (MsgId) EnumDescriptor() ([]byte, []int) { + return file_internal_proto_rawDescGZIP(), []int{0} +} + +type InternalMsg struct { + state protoimpl.MessageState `protogen:"open.v1"` + ConnId uint32 `protobuf:"varint,1,opt,name=conn_id,json=connId,proto3" json:"conn_id,omitempty"` // 刚登陆时没有user_id,只有conn_id + UserId int64 `protobuf:"varint,2,opt,name=user_id,json=userId,proto3" json:"user_id,omitempty"` // 玩家id + MsgId int32 `protobuf:"varint,3,opt,name=msg_id,json=msgId,proto3" json:"msg_id,omitempty"` // 消息id + Msg []byte `protobuf:"bytes,4,opt,name=msg,proto3" json:"msg,omitempty"` // 消息 + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *InternalMsg) Reset() { + *x = InternalMsg{} + mi := &file_internal_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *InternalMsg) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*InternalMsg) ProtoMessage() {} + +func (x *InternalMsg) ProtoReflect() protoreflect.Message { + mi := &file_internal_proto_msgTypes[0] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use InternalMsg.ProtoReflect.Descriptor instead. +func (*InternalMsg) Descriptor() ([]byte, []int) { + return file_internal_proto_rawDescGZIP(), []int{0} +} + +func (x *InternalMsg) GetConnId() uint32 { + if x != nil { + return x.ConnId + } + return 0 +} + +func (x *InternalMsg) GetUserId() int64 { + if x != nil { + return x.UserId + } + return 0 +} + +func (x *InternalMsg) GetMsgId() int32 { + if x != nil { + return x.MsgId + } + return 0 +} + +func (x *InternalMsg) GetMsg() []byte { + if x != nil { + return x.Msg + } + return nil +} + +// 网关解包客户端消息 +type C2SMessage struct { + state protoimpl.MessageState `protogen:"open.v1"` + ServiceType int32 `protobuf:"varint,1,opt,name=service_type,json=serviceType,proto3" json:"service_type,omitempty"` // 服务类型,通过该值判断发往lobby,game,chat等内部服务 + MsgId int32 `protobuf:"varint,2,opt,name=msg_id,json=msgId,proto3" json:"msg_id,omitempty"` // 消息id + UserId int64 `protobuf:"varint,3,opt,name=user_id,json=userId,proto3" json:"user_id,omitempty"` // 玩家id + Msg []byte `protobuf:"bytes,4,opt,name=msg,proto3" json:"msg,omitempty"` // 消息 + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *C2SMessage) Reset() { + *x = C2SMessage{} + mi := &file_internal_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *C2SMessage) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*C2SMessage) ProtoMessage() {} + +func (x *C2SMessage) ProtoReflect() protoreflect.Message { + mi := &file_internal_proto_msgTypes[1] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use C2SMessage.ProtoReflect.Descriptor instead. +func (*C2SMessage) Descriptor() ([]byte, []int) { + return file_internal_proto_rawDescGZIP(), []int{1} +} + +func (x *C2SMessage) GetServiceType() int32 { + if x != nil { + return x.ServiceType + } + return 0 +} + +func (x *C2SMessage) GetMsgId() int32 { + if x != nil { + return x.MsgId + } + return 0 +} + +func (x *C2SMessage) GetUserId() int64 { + if x != nil { + return x.UserId + } + return 0 +} + +func (x *C2SMessage) GetMsg() []byte { + if x != nil { + return x.Msg + } + return nil +} + +var File_internal_proto protoreflect.FileDescriptor + +const file_internal_proto_rawDesc = "" + + "\n" + + "\x0einternal.proto\x12\x03ipb\"h\n" + + "\vInternalMsg\x12\x17\n" + + "\aconn_id\x18\x01 \x01(\rR\x06connId\x12\x17\n" + + "\auser_id\x18\x02 \x01(\x03R\x06userId\x12\x15\n" + + "\x06msg_id\x18\x03 \x01(\x05R\x05msgId\x12\x10\n" + + "\x03msg\x18\x04 \x01(\fR\x03msg\"q\n" + + "\n" + + "C2SMessage\x12!\n" + + "\fservice_type\x18\x01 \x01(\x05R\vserviceType\x12\x15\n" + + "\x06msg_id\x18\x02 \x01(\x05R\x05msgId\x12\x17\n" + + "\auser_id\x18\x03 \x01(\x03R\x06userId\x12\x10\n" + + "\x03msg\x18\x04 \x01(\fR\x03msg*+\n" + + "\x05MsgId\x12\v\n" + + "\aUnknown\x10\x00\x12\x15\n" + + "\bInternal\x10\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01B\x12Z\x10common/proto/ipbb\x06proto3" + +var ( + file_internal_proto_rawDescOnce sync.Once + file_internal_proto_rawDescData []byte +) + +func file_internal_proto_rawDescGZIP() []byte { + file_internal_proto_rawDescOnce.Do(func() { + file_internal_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_internal_proto_rawDesc), len(file_internal_proto_rawDesc))) + }) + return file_internal_proto_rawDescData +} + +var file_internal_proto_enumTypes = make([]protoimpl.EnumInfo, 1) +var file_internal_proto_msgTypes = make([]protoimpl.MessageInfo, 2) +var file_internal_proto_goTypes = []any{ + (MsgId)(0), // 0: ipb.MsgId + (*InternalMsg)(nil), // 1: ipb.InternalMsg + (*C2SMessage)(nil), // 2: ipb.C2SMessage +} +var file_internal_proto_depIdxs = []int32{ + 0, // [0:0] is the sub-list for method output_type + 0, // [0:0] is the sub-list for method input_type + 0, // [0:0] is the sub-list for extension type_name + 0, // [0:0] is the sub-list for extension extendee + 0, // [0:0] is the sub-list for field type_name +} + +func init() { file_internal_proto_init() } +func file_internal_proto_init() { + if File_internal_proto != nil { + return + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: unsafe.Slice(unsafe.StringData(file_internal_proto_rawDesc), len(file_internal_proto_rawDesc)), + NumEnums: 1, + NumMessages: 2, + NumExtensions: 0, + NumServices: 0, + }, + GoTypes: file_internal_proto_goTypes, + DependencyIndexes: file_internal_proto_depIdxs, + EnumInfos: file_internal_proto_enumTypes, + MessageInfos: file_internal_proto_msgTypes, + }.Build() + File_internal_proto = out.File + file_internal_proto_goTypes = nil + file_internal_proto_depIdxs = nil +} diff --git a/processor/processor_test.go b/processor/processor_test.go new file mode 100644 index 0000000..88826e4 --- /dev/null +++ b/processor/processor_test.go @@ -0,0 +1,27 @@ +package processor + +import ( + "fmt" + "github.com/golang/protobuf/proto" + "testing" +) + +func onChat(userId int64, req *InternalMsg) { + _ = userId + fmt.Println("onChat", string(req.Msg)) +} + +func TestProcessor(t *testing.T) { + p := NewProcessor() + p.RegisterMessages(RegisterMetas{ + MsgId_Internal: {InternalMsg{}, onChat}, + }) + + tmp := &InternalMsg{UserId: 1, ConnId: 1, MsgId: int32(MsgId_Internal), Msg: []byte("hello world")} + data, _ := proto.Marshal(tmp) + + req, _ := p.Unmarshal(int32(MsgId_Internal), data) + if err := p.Dispatch(int32(MsgId_Internal), int64(1), req); err != nil { + t.Error(err) + } +}