@@ -2309,8 +2309,7 @@ class monitor_t
2309
2309
{
2310
2310
assert (_monitor_socket);
2311
2311
2312
- zmq_msg_t eventMsg;
2313
- zmq_msg_init (&eventMsg);
2312
+ zmq::message_t eventMsg;
2314
2313
2315
2314
zmq::pollitem_t items[] = {
2316
2315
{_monitor_socket.handle (), 0 , ZMQ_POLLIN, 0 },
@@ -2319,48 +2318,42 @@ class monitor_t
2319
2318
zmq::poll (&items[0 ], 1 , timeout);
2320
2319
2321
2320
if (items[0 ].revents & ZMQ_POLLIN) {
2322
- int rc = zmq_msg_recv (& eventMsg, _monitor_socket.handle (), 0 );
2321
+ int rc = zmq_msg_recv (eventMsg. handle () , _monitor_socket.handle (), 0 );
2323
2322
if (rc == -1 && zmq_errno () == ETERM)
2324
2323
return false ;
2325
2324
assert (rc != -1 );
2326
2325
2327
2326
} else {
2328
- zmq_msg_close (&eventMsg);
2329
2327
return false ;
2330
2328
}
2331
2329
2332
2330
#if ZMQ_VERSION_MAJOR >= 4
2333
- const char *data = static_cast <const char *>(zmq_msg_data (& eventMsg));
2331
+ const char *data = static_cast <const char *>(eventMsg. data ( ));
2334
2332
zmq_event_t msgEvent;
2335
2333
memcpy (&msgEvent.event , data, sizeof (uint16_t ));
2336
2334
data += sizeof (uint16_t );
2337
2335
memcpy (&msgEvent.value , data, sizeof (int32_t ));
2338
2336
zmq_event_t *event = &msgEvent;
2339
2337
#else
2340
- zmq_event_t *event = static_cast <zmq_event_t *>(zmq_msg_data (& eventMsg));
2338
+ zmq_event_t *event = static_cast <zmq_event_t *>(eventMsg. data ( ));
2341
2339
#endif
2342
2340
2343
2341
#ifdef ZMQ_NEW_MONITOR_EVENT_LAYOUT
2344
- zmq_msg_t addrMsg;
2345
- zmq_msg_init (&addrMsg);
2346
- int rc = zmq_msg_recv (&addrMsg, _monitor_socket.handle (), 0 );
2342
+ zmq::message_t addrMsg;
2343
+ int rc = zmq_msg_recv (addrMsg.handle (), _monitor_socket.handle (), 0 );
2347
2344
if (rc == -1 && zmq_errno () == ETERM) {
2348
- zmq_msg_close (&eventMsg);
2349
2345
return false ;
2350
2346
}
2351
2347
2352
2348
assert (rc != -1 );
2353
- const char *str = static_cast <const char *>(zmq_msg_data (&addrMsg));
2354
- std::string address (str, str + zmq_msg_size (&addrMsg));
2355
- zmq_msg_close (&addrMsg);
2349
+ std::string address = addrMsg.to_string ();
2356
2350
#else
2357
2351
// Bit of a hack, but all events in the zmq_event_t union have the same layout so this will work for all event types.
2358
2352
std::string address = event->data .connected .addr ;
2359
2353
#endif
2360
2354
2361
2355
#ifdef ZMQ_EVENT_MONITOR_STOPPED
2362
2356
if (event->event == ZMQ_EVENT_MONITOR_STOPPED) {
2363
- zmq_msg_close (&eventMsg);
2364
2357
return false ;
2365
2358
}
2366
2359
@@ -2424,7 +2417,6 @@ class monitor_t
2424
2417
on_event_unknown (*event, address.c_str ());
2425
2418
break ;
2426
2419
}
2427
- zmq_msg_close (&eventMsg);
2428
2420
2429
2421
return true ;
2430
2422
}
0 commit comments