带 ACE 反应器的 ZeroMQ
ZeroMQ with ACE Reactor
我有一个使用 ACE Reactor 处理通信的遗留应用程序。为了提高跨临时网络分区的可靠性,我想使用 ZeroMQ 而不是 TCP 套接字作为传输。 ACE 为 existing IPC 机制提供 C++ 包装器,但我想提供 ACE 可以使用的 custom IPC 机制。在我的特殊情况下,我想使用 zmq,但我的问题更笼统,我想问的是,如何使用 ACE 自定义传输?
有两种方法可以解决这个问题。
- 从
ACE_SOCK
或 ACE_IPC_SAP
派生出一个新的 IPC classes 家族,这取决于 ZeroMQ 为您提供的模型。不要忘记要匹配的地址class。这是很多工作,但如果您要在许多地方重复使用它,可能是值得的。
- 从
ACE_Event_Handler
中为您的用例派生一个处理程序,并包含一个作为您的 ZeroMQ 传输对象的成员。假设您可以从 ZeroMQ 对象获得一个可选择的套接字句柄,您可以从 get_handle()
挂钩访问它并将它注册到反应器。然后从您的 handle_input()
等回调进行消息传输。这个比较简单快捷。
我有一个使用 ACE Reactor 处理通信的遗留应用程序。为了提高跨临时网络分区的可靠性,我想使用 ZeroMQ 而不是 TCP 套接字作为传输。 ACE 为 existing IPC 机制提供 C++ 包装器,但我想提供 ACE 可以使用的 custom IPC 机制。在我的特殊情况下,我想使用 zmq,但我的问题更笼统,我想问的是,如何使用 ACE 自定义传输?
有两种方法可以解决这个问题。
- 从
ACE_SOCK
或ACE_IPC_SAP
派生出一个新的 IPC classes 家族,这取决于 ZeroMQ 为您提供的模型。不要忘记要匹配的地址class。这是很多工作,但如果您要在许多地方重复使用它,可能是值得的。 - 从
ACE_Event_Handler
中为您的用例派生一个处理程序,并包含一个作为您的 ZeroMQ 传输对象的成员。假设您可以从 ZeroMQ 对象获得一个可选择的套接字句柄,您可以从get_handle()
挂钩访问它并将它注册到反应器。然后从您的handle_input()
等回调进行消息传输。这个比较简单快捷。