欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

protobuf extension

程序员文章站 2022-05-27 22:40:48
...

 

有时需要扩展公共模块的功能,各个子模块实现各自业务逻辑,protobuf 提供了extensions用于处理该场景。

 

公共协议comm_info.proto

package test;

message CommReq
{
	optional int id = 1;
	extensions 10000 to 12000;	  // 预留[10000,12000]用于扩展
}

 

 业务模块user_info.proto

import "pb/comm_info.proto";

package test;

message UserInfo
{
	optional uint32 dwIntf = 1;
}

 

c++调用方式:

// 设置扩展字段
CommReq sReq;
UserInfo *stUserInfo = sReq.MutableExtension(test::stUserInfo);
stUserInfo->set_ddwnonce(msg->nonce());
stUserInfo->set_ddwappid(msg->appid);

// 获取扩展字段
int srvid = sReq.GetExtension(test::stUserInfo).dwintf();

 

参考链接:

Google protobuf

 

 

 

 

 

相关标签: protobuf extensions