[英]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.