java — поддерживает ли Cap’n Proto сообщения с разделителями

Есть ли Cap’n Proto поддержка сообщений с разделителями?

Моя цель — записать несколько сообщений в файловый канал и читать в режиме реального времени по мере их записи.

Так…

  1. Сообщения должны быть каким-либо образом разделены.

  2. И парсер должен уметь обнаруживать неполные сообщения и ждать.

1

Решение

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

3

Другие решения

Cap’n’Proto не предназначен для анализа потока, хотя вы можете использовать его как таковой (рассматривая ваше сообщение как последовательность Text или же Data блоки (в зависимости от вашего конкретного случая использования).

0