使用Protobuf的一些经验总结

本文介绍了在工作中使用Google Protobuf进行数据序列化时遇到的挑战,包括如何对嵌套类型信息进行赋值,以及如何利用自反射机制进行数据的封包解包。详细讲解了赋值的两种方法,即使用'set_allocated_'和'mutable_'函数,并推荐了一篇关于自反射机制应用的文章。
摘要由CSDN通过智能技术生成

近段时间由于工作中要用到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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值