如何汇总protobuf消息

时间:2018-07-10 11:43:05

标签: c++ protocol-buffers

我有一个protobuf消息,如下所示:

message sample {
    optional int32 value1 = 1;
    optional int32 value2 = 2;
    ...
    optional int64 valuen = n;
}

有很多对象,我想聚合这些对象。正常方法是:

void aggregate(ample& msg1, sample& msg2) {
  msg1.set_value1(msg1.value1() + msg2.value1());
  msg1.set_value1(msg1.value2() + msg2.value2());
  ...
  msg1.set_value1(msg1.valuen() + msg2.valuen());
}

有什么方法可以简化代码?我尝试使用MergeFrom方法,但它替换了不添加的可选字段。

1 个答案:

答案 0 :(得分:0)

协议缓冲区不是为这种操纵而构建的。问题是,如果您的消息结构很浅,那么就可以了,如果您不确定每次需要更改消息结构时都会造成问题的消息结构。

MergeFrom非常有用,如果您有2条消息,并且想要将它们的结构连接在一起,但是您不希望这样做。

您可能会有一个重复字段(std vector)来存储元素并对其进行汇总。