Skip to content

Commit 795331f

Browse files
committed
#42 support zmq version 4.2.5
1 parent 33af8ff commit 795331f

File tree

2 files changed

+17
-2
lines changed

2 files changed

+17
-2
lines changed

infinite_sense_core/include/messenger.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,5 +29,6 @@ class Messenger {
2929
zmq::socket_t publisher_{}, subscriber_{};
3030
std::string endpoint_{};
3131
std::vector<std::thread> sub_threads_;
32+
bool use_old_zmq_ = true;
3233
};
3334
} // namespace infinite_sense

infinite_sense_core/src/messenger.cpp

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,12 @@
44
namespace infinite_sense {
55

66
Messenger::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

Comments
 (0)