近段时间由于工作中要用到Google的protobuf序列化工具,需求是在socket中使用protobuf序列化后进行数据的交互。从不了解到会入门使用这个过程可谓是坎坷,遇到了几个关键的问题
a、 如何对嵌套类型的信息赋值;
b、 自反射机制使用;
通过查阅官方文档和各大技术论坛,总算解决了这些疑问,现将这些解决方法整理,希望能帮助到像我一样的刚入门级的同志们,快速上手使用。
1、 如何对嵌套类型的信息赋值
信息赋值包含了简单信息的赋值和复合信息的赋值,简单信息的赋值比较简单,在生成的文件中包含了用于赋值的以“set_”开头的成员函数,如定义了下述的proto文件:
message classA
{
required uint32 a =1;
required uint32 b =2;
}
message classB
{
required int32 x = 1; //简单信息
required int32 y = 2;
required classA complex = 3; //复合信息
}
生成的函数接口如下所示:
classA接口代码
// required uint32 a = 1;
inline bool has_a() const;
inline void clear_a();
static const int kAFieldNumber = 1;
inline ::google::protobuf::uint32 a() const;
i