Cap'n Protoは区切りメッセージをサポートしていますか?
私の目標は、複数のメッセージをファイル パイプに書き込み、書き込み中にリアルタイムで読み取ることです。
そう...
メッセージは何らかの方法で区切る必要があります。
また、パーサーは不完全なメッセージを検出して待機できる必要があります。
Cap'n Protoは区切りメッセージをサポートしていますか?
私の目標は、複数のメッセージをファイル パイプに書き込み、書き込み中にリアルタイムで読み取ることです。
そう...
メッセージは何らかの方法で区切る必要があります。
また、パーサーは不完全なメッセージを検出して待機できる必要があります。
はい。プロトコル バッファとは異なり、Cap'n Proto メッセージは本質的に自己区切りです。標準のシリアライゼーション関数を使用して、同じストリームにメッセージを繰り返し書き込むか、同じストリームからメッセージを繰り返し読み取ると、「そのまま動作」します。パーサーが入力を待機する方法を認識できるように、ストリームへの書き込み/ストリームからの読み取りを行うシリアル化/解析ルーチンを必ず使用してください (C++ では、ファイル記述子または抽象InputStream
/を使用できます)。OutputStream
イベント駆動型のアプローチを好む場合は、これらの非同期 (非ブロッキング) バージョンもあります。
Cap'n'Proto はストリーム パーサーを意図したものではありませんが、そのように使用することはできます (メッセージをいずれかText
またはData
ブロックのシーケンスとして扱うことによって (正確なユース ケースに応じて))。