Protobuf - это добавляемый формат, и ваш макет идеально подходит для этого. Просто откройте файл , расположенный в конце , и начните с нового (пустого) BigObject
. Добавьте / serialize только новый Message
экземпляр и запишите в файл (с конца и далее).
Теперь, если вы проанализируете ваш файл с начала , вы получите один BigObject
со всеми Message
экземплярами (старыми и новыми).
На самом деле вы могли бы сделать это, регистрируя каждого индивидуума Message
по мере его поступления, если вы каждый раз заключаете его в BigObject
, то есть в псевдокод
loop {
msg = await NextMessage();
wrapper = new BigObject();
wrapper.Messages.Add(msg);
file = OpenFileAtEnd();
wrapper.WriteTo(file);
file.Close();
}