Есть ли Cap’n Proto поддержка сообщений с разделителями?
Моя цель — записать несколько сообщений в файловый канал и читать в режиме реального времени по мере их записи.
Так…
Сообщения должны быть каким-либо образом разделены.
И парсер должен уметь обнаруживать неполные сообщения и ждать.
Да. В отличие от буферов протокола, сообщения Cap’n Proto по своей природе являются саморазграничивающими. Если вы используете стандартные функции сериализации для многократной записи сообщений в один и тот же поток или многократного чтения сообщений из одного и того же потока, это будет «просто работать». Убедитесь, что вы используете процедуры сериализации / синтаксического анализа, которые пишут / читают из потока (в C ++ вы можете использовать файловый дескриптор или реферат InputStream
/OutputStream
), так что парсер знает, как ждать ввода. Существуют также асинхронные (неблокирующие) версии, если вы предпочитаете подход, основанный на событиях.
Cap’n’Proto не предназначен для анализа потока, хотя вы можете использовать его как таковой (рассматривая ваше сообщение как последовательность Text
или же Data
блоки (в зависимости от вашего конкретного случая использования).