如何通过 ZMQ 发送 Cap'n 原型消息
How to Send Cap'n Proto Message over ZMQ
使用Cap'n Proto发送消息的示例需要一个文件描述符来写入:
::capnp::writeMessageToFd(fd, message);
但是在ZMQ中,消息需要传递给ZMQ函数:
zmq_send(requester, "Hello", 5, 0);
http://zguide.zeromq.org/page:所有
如何解决这个不兼容?
两种可能:
- 使用
capnp::messageToFlatArray()
作为单个平面数组获取消息。注意,这需要创建消息内容的副本。 - 将消息作为ZeroMQ多部分消息发送,其中部分为消息的段。
capnp::MessageBuilder::getSegmentsForOutput()
返回指向原始消息段的数组的数组。capnp::SegmentArrayMessageReader
以这样一个数组的数组作为输入。如果您可以将数组的数组作为多部分消息发送,那么您完全可以跳过使用capnp/serialize.h
,因为它的唯一目的是将段与段表组合成单个消息。在您的情况下,ZeroMQ将负责记住每个段的开始和结束位置。
我推荐#2,但它有点复杂。
相关文章:
- boost::进程间消息队列引发错误
- 函数向量_指针有不同的原型,我可以构建一个吗
- 在线编译器中的分段C++没有打印消息
- C++错误消息*成员参考.**初学者*
- 在createdialog创建的窗口中捕获用于编辑控件的OnMouseMove消息
- 要与"if constexpr"一起使用的编译时消息(在预处理器之后)
- 如何通过参数抛出错误消息
- 从服务器传输到客户端的消息不会出现
- 功能原型的目的
- getline() 的原型/库是什么;
- ROS2 动态消息模板
- 具有enable_if外部类原型的模板类构造函数定义
- C++秘密消息学校作业
- glad 导致 glfwSwapBuffers 返回错误消息
- 函数如何通知用户它基于函数原型抛出异常?
- C++入门 5 版:类消息和文件夹
- 如何进行原型消息交叉引用?
- 预序列化原型消息的某些字段
- 全球原型消息
- 如何通过 ZMQ 发送 Cap'n 原型消息