带 ACE 反应器的 ZeroMQ

ZeroMQ with ACE Reactor

我有一个使用 ACE Reactor 处理通信的遗留应用程序。为了提高跨临时网络分区的可靠性,我想使用 ZeroMQ 而不是 TCP 套接字作为传输。 ACE 为 existing IPC 机制提供 C++ 包装器,但我想提供 ACE 可以使用的 custom IPC 机制。在我的特殊情况下,我想使用 zmq,但我的问题更笼统,我想问的是,如何使用 ACE 自定义传输?

有两种方法可以解决这个问题。

  1. ACE_SOCKACE_IPC_SAP 派生出一个新的 IPC classes 家族,这取决于 ZeroMQ 为您提供的模型。不要忘记要匹配的地址class。这是很多工作,但如果您要在许多地方重复使用它,可能是值得的。
  2. ACE_Event_Handler 中为您的用例派生一个处理程序,并包含一个作为您的 ZeroMQ 传输对象的成员。假设您可以从 ZeroMQ 对象获得一个可选择的套接字句柄,您可以从 get_handle() 挂钩访问它并将它注册到反应器。然后从您的 handle_input() 等回调进行消息传输。这个比较简单快捷。