-
Notifications
You must be signed in to change notification settings - Fork 21
ProtoManager模块
zerlenzhang edited this page Mar 5, 2020
·
1 revision
CmdPackage包传输协议的body支持Json和Protobuf,开发时使用哪一项,需要提前初始化设置好,如果选择protobuf,会有更多需要注意的点。
-
初始化
-
args:
- 【必须】协议类型,0-Json,1-Protobuf
- 【可选】如果选择protobuf,第二参数要传.proto文件所在目录绝对路径
local ProtoType={
Json=0,
Protobuf=1,
};
ProtoManager.Init(ProtoType.Protobuf,protofiledir);`
- 注册serviceType,cmdType和protobuf消息名的映射
- args:
- cmdNameMap : 类型复杂,见示例
local ServiceType = require("ServiceType");
local cmdNameMap={};
cmdNameMap[ServiceType.Logic]={
`LoginLogicReq = 1,`
};
cmdNameMap[ServiceType.Auth]={
`UserLostConn = 0,`
`GuestLoginReq = 1,`
}
ProtoManager.RegisterCmdMap(cmdNameMap)
我们的底层在解析protobuf消息体的时候,会自动将之转化成Lua表,也会将Lua表自动转化成protobuf消息,
- 所以,底层需要知道如何根据serviceType和cmdType判断解析成哪一种protobuf消息
- 所以,上面字段名必须和.proto中message名一致
- 所以,在发送CmdPackage时,stype,ctype和message类型要对应好