proto-gen AS3版本的protobuf extension反序列化错误解决方法
来源:互联网 发布:淘宝单号查询 编辑:程序博客网 时间:2024/05/22 13:00
转载请注明:http://blog.csdn.net/herm_lib/article/details/8330493
前段时间用了 proto-gen AS3版本的 protobuf,用到了extension的时候,出事了,表现为,有时候反序列成功,有时候又失败,各种未定义行为。因为,先前用C++版本都很顺利,所以惯性上认为是自己代码有问题,然后各种排查,无果。然后,问同事,他们都没用到extension特性;网上查,按照proto-gen wiki上操作,不行。最后,就给pop_atry这哥们(中国人,好沟通)发邮件,原来这哥们wiki上的例子写错了,被坑了(开玩笑)。在这里,感谢pop_atry的回复。处理这个是问题有一段时间了,今天突然想到要写在blog上,让后来人得于立即解决这个问题,避免我当时解决问题的各种悲剧,浪费很多时间。
protobuf extension的使用方法请见:http://blog.csdn.net/herm_lib/article/details/7843560
定义的消息结构:
主文件 cs_msg.proto:message MsgBody{ // [19000, 19999]是protobuf预留 extensions 100 to max; // max is 2^29 - 1 tags分配规则见下面}另外一个文件cs_auth.proto:import cs_msg.proto;message SignReq{ required uint32 uid = 1;}extend MsgBody{ optional SignReq sign_req = 201;}
序列化:
var mb:MsgBody = new MsgBody;var singReq:SignReq = mb[SIGN_REQ];
反序列化
var mb:Msg = new MsgBody;mb.MergeFrom(...);void(SIGN_RES); // 必须加一个这行var singRes:SignRes = mb[SIGN_RES];
上面的void(SIGN_RES); 必须得加上,否则就会出现莫名其妙的解析结果。 这个用法很奇怪,我只用,但不知道什么原理。
- proto-gen AS3版本的protobuf extension反序列化错误解决方法
- protoc-gen-as3 的as3 序列化和反序列化例子
- protoc-gen-as3 的as3 序列化和反序列化例子
- Proto-gen-lua 与 C# 对 Extension 的不同处理
- protobuf的AS3版本
- protobuf 的序列化与反序列化
- protobuf的序列化与反序列化
- 【Protocol Buffer】Protobuf的序列化和反序列化
- ProtoBuf的序列化和反序列化
- protobuf-actionscript3 和 protoc-gen-as3 总结
- protobuf 序列化 反序列接口
- protobuf-gen-lua 不能支持int64 的解决方法 !!
- 性能最好的序列化反序列化,Protobuf的用法(maven项目)
- 性能最好的序列化反序列化,Protobuf的用法(maven项目)
- Google Protobuf Primer (1) 实现跨平台跨语言的序列化/反序列化
- Google Protobuf - 实现跨平台跨语言的序列化/反序列化
- Google Protobuf——实现跨平台跨语言的序列化/反序列化
- protobuf Message的序列化和反序列化string类型
- 项目管理心得:一个项目经理的个人体会、经验总结
- struts2用action属性接收参数
- CCTexture2D、CCTextureAtlas、CCSprite及CCSpriteBatchNode
- android下图片压缩
- linux上查看系统信息
- proto-gen AS3版本的protobuf extension反序列化错误解决方法
- PHP API反射实例
- 2012年Hadoop渐成熟 12家厂商群雄逐鹿
- 你真的了解.NET中的String吗?
- Task和Activity相关(zz)
- Linux虚拟化:虚拟化技术漫谈
- android 使用GridView实现Gallery的效果,并且从最左边开始
- 有效的邮箱地址
- 当你学习或工作进行不下去的时候,不防试试“普瑞马法则