google protobuf消息序列化后的数据是没有类型信息的。而一般网络应用要求序列化后发送到对端,还原出类型,反序列化,再派发给相应的消息处理函数。
以下代码简单实现了自动派发的机制。新增protobuf消息只要增加一行声明的代码和相应的处理函数就可以了。
http://eddyserver.googlecode.com/svn/trunk/common/tests/protoserver.cc
这段代码用了一些宏技巧,实现在proto.h声明新消息时自动生成相应的case分支。
proto_def.h也用了类似的技巧,来自动生成protobuf消息的类型标识和一些通过类型获取标识的模板。
本文介绍了一种基于Google Protobuf的消息序列化自动派发机制。该机制利用宏定义简化了新消息类型的添加过程,只需在头文件中声明消息类型即可自动生成对应的处理分支,大大提升了开发效率。
3803





