Problem: poller_t is copyable, but does not implement copying properly

Solution: make poller_t non-copyable, but properly movable
This commit is contained in:
sigiesec 2018-03-26 16:58:13 +02:00
parent 84ab7a0fc6
commit 16a76513e3

22
zmq.hpp
View File

@ -990,8 +990,28 @@ namespace zmq
~poller_t ()
{
zmq_poller_destroy (&poller_ptr);
if (poller_ptr)
{
int rc = zmq_poller_destroy (&poller_ptr);
assert(rc == 0);
}
}
poller_t(const poller_t&) = delete;
poller_t &operator=(const poller_t&) = delete;
poller_t(poller_t&& src)
: poller_ptr(src.poller_ptr)
, poller_events(std::move (src.poller_events))
{
src.poller_ptr = NULL;
}
poller_t &operator=(poller_t&& src)
{
poller_ptr = src.poller_ptr;
poller_events = std::move (src.poller_events);
src.poller_ptr = NULL;
return *this;
}
bool add (zmq::socket_t &socket, short events, std::function<void(void)> &handler)
{