23 ipc_thread_ = std::thread([
this, addr]() {
24 zmq::context_t ctx{1};
25 zmq::socket_t req{ctx, zmq::socket_type::req};
27 req.set(zmq::sockopt::rcvtimeo, 2000);
31 std::unique_lock<std::mutex> lock(mutex_);
32 cv_.wait(lock, [
this]() {
33 return stop_flag_ || !msg_queue_.empty();
35 if (stop_flag_ && msg_queue_.empty())
break;
36 msg = msg_queue_.front();
41 req.send(zmq::const_buffer(data.data(), data.size()),
42 zmq::send_flags::dontwait);
44 if (req.recv(reply, zmq::recv_flags::none)) {
47 }
catch(
const zmq::error_t& e){
48 std::cerr <<
"zmq error: " << e.what() << std::endl;