Protobuf не поддерживает эту функцию. Его можно использовать только для сериализации одного сообщения, но это сериализованное сообщение не содержит информации о его типе (поле или ящики) и длине. Поэтому, если вы хотите сохранить несколько сообщений, вы должны также указать тип и длину сообщения. Алгоритм записи (на псевдо-языке) может выглядеть так:
for every message {
write(type_of_message) // 1 byte long
write(length_of_serialized_message) // 4 bytes long
write(serialized_message)
}
Алгоритм загрузки:
while(end_of_file) {
type = read(1) // 1 byte
length = read(4) // 4 bytes
buffer = read(length)
switch (type) {
case 1:
deserialise_message_1(buffer)
case 2:
deserialise_message_2(buffer)
}
}