Skip to content

Commit 180fbcc

Browse files
authored
Merge pull request #497 from zeromq/gfa/pollms
Problem: poll default timeout is deprecated
2 parents b4c5c6a + 2b466a6 commit 180fbcc

File tree

1 file changed

+30
-14
lines changed

1 file changed

+30
-14
lines changed

zmq.hpp

Lines changed: 30 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -299,66 +299,78 @@ class error_t : public std::exception
299299
int errnum;
300300
};
301301

302-
inline int poll(zmq_pollitem_t *items_, size_t nitems_, long timeout_ = -1)
302+
namespace detail {
303+
inline int poll(zmq_pollitem_t *items_, size_t nitems_, long timeout_)
303304
{
304305
int rc = zmq_poll(items_, static_cast<int>(nitems_), timeout_);
305306
if (rc < 0)
306307
throw error_t();
307308
return rc;
308309
}
310+
}
311+
312+
#ifdef ZMQ_CPP11
313+
ZMQ_DEPRECATED("from 4.8.0, use poll taking std::chrono::duration instead of long")
314+
inline int poll(zmq_pollitem_t *items_, size_t nitems_, long timeout_)
315+
#else
316+
inline int poll(zmq_pollitem_t *items_, size_t nitems_, long timeout_ = -1)
317+
#endif
318+
{
319+
return detail::poll(items_, nitems_, timeout_);
320+
}
309321

310322
ZMQ_DEPRECATED("from 4.3.1, use poll taking non-const items")
311323
inline int poll(zmq_pollitem_t const *items_, size_t nitems_, long timeout_ = -1)
312324
{
313-
return poll(const_cast<zmq_pollitem_t *>(items_), nitems_, timeout_);
325+
return detail::poll(const_cast<zmq_pollitem_t *>(items_), nitems_, timeout_);
314326
}
315327

316328
#ifdef ZMQ_CPP11
317329
ZMQ_DEPRECATED("from 4.3.1, use poll taking non-const items")
318330
inline int
319331
poll(zmq_pollitem_t const *items, size_t nitems, std::chrono::milliseconds timeout)
320332
{
321-
return poll(const_cast<zmq_pollitem_t *>(items), nitems,
333+
return detail::poll(const_cast<zmq_pollitem_t *>(items), nitems,
322334
static_cast<long>(timeout.count()));
323335
}
324336

325337
ZMQ_DEPRECATED("from 4.3.1, use poll taking non-const items")
326338
inline int poll(std::vector<zmq_pollitem_t> const &items,
327339
std::chrono::milliseconds timeout)
328340
{
329-
return poll(const_cast<zmq_pollitem_t *>(items.data()), items.size(),
341+
return detail::poll(const_cast<zmq_pollitem_t *>(items.data()), items.size(),
330342
static_cast<long>(timeout.count()));
331343
}
332344

333345
ZMQ_DEPRECATED("from 4.3.1, use poll taking non-const items")
334346
inline int poll(std::vector<zmq_pollitem_t> const &items, long timeout_ = -1)
335347
{
336-
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_);
337349
}
338350

339351
inline int
340-
poll(zmq_pollitem_t *items, size_t nitems, std::chrono::milliseconds timeout)
352+
poll(zmq_pollitem_t *items, size_t nitems, std::chrono::milliseconds timeout = std::chrono::milliseconds{-1})
341353
{
342-
return poll(items, nitems, static_cast<long>(timeout.count()));
354+
return detail::poll(items, nitems, static_cast<long>(timeout.count()));
343355
}
344356

345357
inline int poll(std::vector<zmq_pollitem_t> &items,
346-
std::chrono::milliseconds timeout)
358+
std::chrono::milliseconds timeout = std::chrono::milliseconds{-1})
347359
{
348-
return poll(items.data(), items.size(), static_cast<long>(timeout.count()));
360+
return detail::poll(items.data(), items.size(), static_cast<long>(timeout.count()));
349361
}
350362

351-
ZMQ_DEPRECATED("from 4.3.1, use poll taking std::chrono instead of long")
352-
inline int poll(std::vector<zmq_pollitem_t> &items, long timeout_ = -1)
363+
ZMQ_DEPRECATED("from 4.3.1, use poll taking std::chrono::duration instead of long")
364+
inline int poll(std::vector<zmq_pollitem_t> &items, long timeout_)
353365
{
354-
return poll(items.data(), items.size(), timeout_);
366+
return detail::poll(items.data(), items.size(), timeout_);
355367
}
356368

357369
template<std::size_t SIZE>
358370
inline int poll(std::array<zmq_pollitem_t, SIZE> &items,
359-
std::chrono::milliseconds timeout)
371+
std::chrono::milliseconds timeout = std::chrono::milliseconds{-1})
360372
{
361-
return poll(items.data(), items.size(), static_cast<long>(timeout.count()));
373+
return detail::poll(items.data(), items.size(), static_cast<long>(timeout.count()));
362374
}
363375
#endif
364376

@@ -2322,7 +2334,11 @@ class monitor_t
23222334
{_monitor_socket.handle(), 0, ZMQ_POLLIN, 0},
23232335
};
23242336

2337+
#ifdef ZMQ_CPP11
2338+
zmq::poll(&items[0], 1, std::chrono::milliseconds(timeout));
2339+
#else
23252340
zmq::poll(&items[0], 1, timeout);
2341+
#endif
23262342

23272343
if (items[0].revents & ZMQ_POLLIN) {
23282344
int rc = zmq_msg_recv(eventMsg.handle(), _monitor_socket.handle(), 0);

0 commit comments

Comments
 (0)