44namespace infinite_sense {
55
66Messenger::Messenger () {
7+ int major, minor, patch;
8+ zmq_version (&major, &minor, &patch);
9+ if ((major == 4 ) && (minor >= 3 )) {
10+ use_old_zmq_ = false ;
11+ LOG (INFO) << " Using new ZMQ version: " << major << " ." << minor << " ." << patch;
12+ }
713 try {
814 endpoint_ = " tcp://127.0.0.1:4565" ;
915 context_ = zmq::context_t (10 );
@@ -61,7 +67,11 @@ void Messenger::Sub(const std::string& topic, const std::function<void(const std
6167 try {
6268 zmq::socket_t subscriber (context_, zmq::socket_type::sub);
6369 subscriber.connect (endpoint_);
64- subscriber.set (zmq::sockopt::subscribe, topic);
70+ if (use_old_zmq_) {
71+ subscriber.setsockopt (ZMQ_SUBSCRIBE, topic.data (), topic.size ());
72+ } else {
73+ subscriber.set (zmq::sockopt::subscribe, topic);
74+ }
6575 while (true ) {
6676 zmq::message_t topic_msg, data_msg;
6777 if (!subscriber.recv (topic_msg) || !subscriber.recv (data_msg)) {
@@ -87,7 +97,11 @@ void Messenger::SubStruct(const std::string& topic, const std::function<void(con
8797 auto context = zmq::context_t (1 );
8898 zmq::socket_t subscriber (context, zmq::socket_type::sub);
8999 subscriber.connect (endpoint_);
90- subscriber.set (zmq::sockopt::subscribe, topic);
100+ if (use_old_zmq_) {
101+ subscriber.setsockopt (ZMQ_SUBSCRIBE, topic.data (), topic.size ());
102+ } else {
103+ subscriber.set (zmq::sockopt::subscribe, topic);
104+ }
91105 while (true ) {
92106 zmq::message_t topic_msg, data_msg;
93107 if (!subscriber.recv (topic_msg) || !subscriber.recv (data_msg)) {
0 commit comments