如何编写protobuf的内联数组

时间:2015-12-07 17:48:40

标签: protocol-buffers

我使用Google的ProtoBuf,我设置了很多价值,如下所示:

optional string  force_sampling  = 1;
optional string  status          = 2;
optional string  host            = 3;
optional string  server_addr     = 4;
optional string  server_port     = 5;
optional string  client_addr     = 6;
optional string  request         = 7;
optional string  msec            = 8;
optional string  request_time    = 9;
optional string  logid           = 10;
optional string  request_body    = 11;
optional string  response_body   = 12;
optional string  other           = 100;

因此,当我为消息设置一个值时,我会编写许多结构,如下所示:

set_logid(); set_request_body(); set_other(); set_request_body(); etc.

我可以更方便地做到这一点吗? 例如,像:

array way={"set_logid","set_other"}
for (;i = 0;i < len)
{
  sample.way[i]()
}

顺便说一句,set_logid是内联的

1 个答案:

答案 0 :(得分:0)

您可以使用Message::GetReflection()功能并使用它来按字符串中的名称访问字段。

文档在这里: https://developers.google.com/protocol-buffers/docs/reference/cpp/google.protobuf.message#Reflection

但是,这会变得更慢,更复杂,所以可能不值得。