编写多条Protobuf消息:1条具有1个重复属性的消息还是写不同的消息?

时间:2019-06-05 09:09:00

标签: c++ protocol-buffers

我需要在一个文件中写入多个protobuf消息。

我看到了有关writeDelimitedFrom and parseDelimitedFrom in C++的帖子,并且想知道使用它(或类似的东西,另一种定界样式)还是只包含我需要乘写的消息的“超级消息”更好?作为重复属性。

syntax = "proto2";
package test;

message myMessage {
  required int32 TimeStamp = 1;
}
message Container {
  repeated myMessage messages = 1;
}

在具有读/写DelimitedFrom的文件中写入多个myMessage或与重复的Container一起写入一个messages更有趣吗?

我认为使用读/写D​​elimitedFrom更为优化(因为我只能附加最后一条消息),但是使用重复属性更容易,但是对于SerializeToOstream,我认为我必须传递整个Container。 br /> 我认为不可能序列化消息的一部分以将其附加到输出文件,就像我从未见过的那样,但是我可能是错的

1 个答案:

答案 0 :(得分:0)

像您一样难过,这两种选择都是可能的。

在很少的myMessages情况下,容器是简单的解决方案。这是因为您无需编写代码即可在回读文件时挑选出各个消息。

是的,您必须通过整个容器。这就是myMessages数量起作用的地方。如果数量很多,最好一次将它们序列化一个myMessage。将其附加到文件,并可能将其刷新到磁盘。