簡體   English   中英

如何匯總protobuf消息

[英]How to aggregate protobuf message

我有一個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方法,但它替換了不添加的可選字段。

協議緩沖區不是為這種操縱而建立的。 問題是,如果您的消息結構較淺,那么就可以了,如果您不確定每次將要更改消息結構時都會造成問題的消息結構。

如果您有2條消息並且想要將它們的結構連接在一起,但您不希望這樣做,那么MergeFrom非常有用。

您可能會有一個重復字段(std vector)來存儲元素並將它們聚合。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM