#pragma once #include #include #include #include #include #include #define private public #include "msgq/impl_msgq.h" #include "msgq/impl_zmq.h" class MsgqToZmq { public: MsgqToZmq() {} void run(const std::vector &endpoints, const std::string &ip); protected: void registerSockets(); void zmqMonitorThread(); struct SocketPair { std::string endpoint; std::unique_ptr pub_sock; std::unique_ptr sub_sock; int connected_clients = 0; }; std::unique_ptr msgq_context; std::unique_ptr zmq_context; std::mutex mutex; std::condition_variable cv; std::unique_ptr msgq_poller; std::map sub2pub; std::vector socket_pairs; };