前言:
公司做了个项目,使用protobuf,各功能号会不断增加,message也会一直变,我做为测试人员,需要做一个测试工具,前期可以通过mfc画图,就是画出message的各个属性对应的输入框,之后按照格式,遍历对应的message,读取输入框的数据来一个个赋值。这样一来,功能号少的时候,还没什么,多画点输入框就是了。后来,message嵌套越来越复杂,其中还夹杂着repeated的属性,repeated中还有repeated、子message,直接崩溃。于是就决心查资料做了这个动态生成的,用CMarku从xml读取数据,感觉挺好用,留个档,也希望对其他人能有个帮助。
预期读者:
对protobuf有一定了解,至少已经跑通过程序,只是遇到了和我类似的问题,现在要使用protobuf的动态生成message并赋值、发送消息给服务端。
理论方面,可以查看大牛的http://blog.csdn.net/solstice/article/details/6300108介绍,说的很细。
正文:
如果我在这里大谈理论,可能就是班门弄斧了,那么废话不多说,直接上代码,上核心代码。
根据message name来生成message
Message* createMessage(const std::string& typeName)
{
google::protobuf::Message* message = NULL;
const google::protobuf