Что использовать в качестве разделителя для потока буферов - PullRequest
0 голосов
/ 29 марта 2019

Я использую плоские буферы для публикации потока объектов в реальном времени. Одна проблема, с которой я столкнулся, заключается в том, как разделить независимые объекты / буферы. Если я использую некоторые символы, такие как '\01' или '|', то нет никакой гарантии, что эти символы не появятся в сериализованном буфере. Каков рекомендуемый способ сделать это?

while (more object) {
    flatbuffers::Offset<Msg> m = foo::CreateMessage(...);
    socket.send('|');
    socket.send(fbb.GetBufferPointer(), fbb.GetSize());
    socket.send('|');
}

1 Ответ

1 голос
/ 29 марта 2019

Используйте «буфер с префиксом длины» (см. FlatBufferBuilder::FinishSizePrefixed и GetRootSizePrefixed) как на стороне отправителя, так и на стороне приема.

Вы пытаетесь использовать методы разделения текста и синтаксического анализа с двоичным буфером. Это никогда не сработает. Вы должны убедиться, что ваш протокол полностью в двоичном формате.

...