Cap'n Proto是否支持分隔消息?
我的目标是将多条消息写入文件管道并在写入时实时读取。
所以...
消息需要以某种方式分隔。
并且解析器必须能够检测到不完整的消息并等待。
是的。与协议缓冲区不同,Cap'n Proto 消息本质上是自定界的。如果您使用标准序列化函数将消息重复写入同一流,或重复从同一流读取消息,它将“正常工作”。确保使用写入/读取流的序列化/解析例程(在 C++ 中,您可以使用文件描述符或抽象InputStream
/ OutputStream
),以便解析器知道如何等待输入。如果您更喜欢事件驱动的方法,还有这些的异步(非阻塞)版本。
Cap'n'Proto 并不意味着作为流解析器,尽管您可以这样使用它(通过将您的消息视为一个Text
或Data
多个块的序列(取决于您的确切用例)。