You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
37 lines
844 B
37 lines
844 B
#pragma once
|
|
|
|
#include <condition_variable>
|
|
#include <map>
|
|
#include <memory>
|
|
#include <mutex>
|
|
#include <string>
|
|
#include <vector>
|
|
|
|
#define private public
|
|
#include "msgq/impl_msgq.h"
|
|
#include "msgq/impl_zmq.h"
|
|
|
|
class MsgqToZmq {
|
|
public:
|
|
MsgqToZmq() {}
|
|
void run(const std::vector<std::string> &endpoints, const std::string &ip);
|
|
|
|
protected:
|
|
void registerSockets();
|
|
void zmqMonitorThread();
|
|
|
|
struct SocketPair {
|
|
std::string endpoint;
|
|
std::unique_ptr<ZMQPubSocket> pub_sock;
|
|
std::unique_ptr<MSGQSubSocket> sub_sock;
|
|
int connected_clients = 0;
|
|
};
|
|
|
|
std::unique_ptr<MSGQContext> msgq_context;
|
|
std::unique_ptr<ZMQContext> zmq_context;
|
|
std::mutex mutex;
|
|
std::condition_variable cv;
|
|
std::unique_ptr<MSGQPoller> msgq_poller;
|
|
std::map<SubSocket *, ZMQPubSocket *> sub2pub;
|
|
std::vector<SocketPair> socket_pairs;
|
|
};
|
|
|