@@ -299,71 +299,78 @@ class error_t : public std::exception
299
299
int errnum;
300
300
};
301
301
302
+ namespace detail {
303
+ inline int poll (zmq_pollitem_t *items_, size_t nitems_, long timeout_)
304
+ {
305
+ int rc = zmq_poll (items_, static_cast <int >(nitems_), timeout_);
306
+ if (rc < 0 )
307
+ throw error_t ();
308
+ return rc;
309
+ }
310
+ }
311
+
302
312
#ifdef ZMQ_CPP11
303
313
ZMQ_DEPRECATED (" from 4.8.0, use poll taking std::chrono::duration instead of long" )
304
314
inline int poll(zmq_pollitem_t *items_, size_t nitems_, long timeout_)
305
315
#else
306
316
inline int poll (zmq_pollitem_t *items_, size_t nitems_, long timeout_ = -1 )
307
317
#endif
308
318
{
309
- int rc = zmq_poll (items_, static_cast <int >(nitems_), timeout_);
310
- if (rc < 0 )
311
- throw error_t ();
312
- return rc;
319
+ return detail::poll (items_, nitems_, timeout_);
313
320
}
314
321
315
322
ZMQ_DEPRECATED (" from 4.3.1, use poll taking non-const items" )
316
323
inline int poll(zmq_pollitem_t const *items_, size_t nitems_, long timeout_ = -1 )
317
324
{
318
- return poll (const_cast <zmq_pollitem_t *>(items_), nitems_, timeout_);
325
+ return detail:: poll (const_cast <zmq_pollitem_t *>(items_), nitems_, timeout_);
319
326
}
320
327
321
328
#ifdef ZMQ_CPP11
322
329
ZMQ_DEPRECATED (" from 4.3.1, use poll taking non-const items" )
323
330
inline int
324
331
poll(zmq_pollitem_t const *items, size_t nitems, std::chrono::milliseconds timeout)
325
332
{
326
- return poll (const_cast <zmq_pollitem_t *>(items), nitems,
333
+ return detail:: poll (const_cast <zmq_pollitem_t *>(items), nitems,
327
334
static_cast <long >(timeout.count ()));
328
335
}
329
336
330
337
ZMQ_DEPRECATED (" from 4.3.1, use poll taking non-const items" )
331
338
inline int poll(std::vector<zmq_pollitem_t > const &items,
332
339
std::chrono::milliseconds timeout)
333
340
{
334
- return poll (const_cast <zmq_pollitem_t *>(items.data ()), items.size (),
341
+ return detail:: poll (const_cast <zmq_pollitem_t *>(items.data ()), items.size (),
335
342
static_cast <long >(timeout.count ()));
336
343
}
337
344
338
345
ZMQ_DEPRECATED (" from 4.3.1, use poll taking non-const items" )
339
346
inline int poll(std::vector<zmq_pollitem_t > const &items, long timeout_ = -1 )
340
347
{
341
- return poll (const_cast <zmq_pollitem_t *>(items.data ()), items.size (), timeout_);
348
+ return detail:: poll (const_cast <zmq_pollitem_t *>(items.data ()), items.size (), timeout_);
342
349
}
343
350
344
351
inline int
345
352
poll (zmq_pollitem_t *items, size_t nitems, std::chrono::milliseconds timeout = std::chrono::milliseconds{-1 })
346
353
{
347
- return poll (items, nitems, static_cast <long >(timeout.count ()));
354
+ return detail:: poll (items, nitems, static_cast <long >(timeout.count ()));
348
355
}
349
356
350
357
inline int poll (std::vector<zmq_pollitem_t > &items,
351
358
std::chrono::milliseconds timeout = std::chrono::milliseconds{-1 })
352
359
{
353
- return poll (items.data (), items.size (), static_cast <long >(timeout.count ()));
360
+ return detail:: poll (items.data (), items.size (), static_cast <long >(timeout.count ()));
354
361
}
355
362
356
363
ZMQ_DEPRECATED (" from 4.3.1, use poll taking std::chrono::duration instead of long" )
357
364
inline int poll(std::vector<zmq_pollitem_t > &items, long timeout_)
358
365
{
359
- return poll (items.data (), items.size (), timeout_);
366
+ return detail:: poll (items.data (), items.size (), timeout_);
360
367
}
361
368
362
369
template <std::size_t SIZE>
363
370
inline int poll (std::array<zmq_pollitem_t , SIZE> &items,
364
- std::chrono::milliseconds timeout)
371
+ std::chrono::milliseconds timeout = std::chrono::milliseconds{- 1 } )
365
372
{
366
- return poll (items.data (), items.size (), static_cast <long >(timeout.count ()));
373
+ return detail:: poll (items.data (), items.size (), static_cast <long >(timeout.count ()));
367
374
}
368
375
#endif
369
376
@@ -2327,7 +2334,11 @@ class monitor_t
2327
2334
{_monitor_socket.handle (), 0 , ZMQ_POLLIN, 0 },
2328
2335
};
2329
2336
2337
+ #ifdef ZMQ_CPP11
2338
+ zmq::poll (&items[0 ], 1 , std::chrono::milliseconds (timeout));
2339
+ #else
2330
2340
zmq::poll (&items[0 ], 1 , timeout);
2341
+ #endif
2331
2342
2332
2343
if (items[0 ].revents & ZMQ_POLLIN) {
2333
2344
int rc = zmq_msg_recv (eventMsg.handle (), _monitor_socket.handle (), 0 );
0 commit comments