4 #if defined ZMQ_IOTHREAD_POLLER_USE_EPOLL
7 #if !defined ZMQ_HAVE_WINDOWS
22 #ifdef ZMQ_HAVE_WINDOWS
23 const zmq::epoll_t::epoll_fd_t zmq::epoll_t::epoll_retired_fd =
28 worker_poller_base_t (ctx_)
30 #ifdef ZMQ_IOTHREAD_POLLER_USE_EPOLL_CLOEXEC
41 zmq::epoll_t::~epoll_t ()
46 #ifdef ZMQ_HAVE_WINDOWS
51 for (retired_t::iterator
it = _retired.begin (),
end = _retired.end ();
57 zmq::epoll_t::handle_t zmq::epoll_t::add_fd (
fd_t fd_, i_poll_events *events_)
60 poll_entry_t *pe =
new (std::nothrow) poll_entry_t;
65 memset (pe, 0,
sizeof (poll_entry_t));
81 void zmq::epoll_t::rm_fd (handle_t handle_)
84 poll_entry_t *pe =
static_cast<poll_entry_t *
> (handle_);
88 _retired.push_back (pe);
94 void zmq::epoll_t::set_pollin (handle_t handle_)
97 poll_entry_t *pe =
static_cast<poll_entry_t *
> (handle_);
103 void zmq::epoll_t::reset_pollin (handle_t handle_)
106 poll_entry_t *pe =
static_cast<poll_entry_t *
> (handle_);
107 pe->ev.events &= ~(
static_cast<uint32_t
> (
EPOLLIN));
112 void zmq::epoll_t::set_pollout (handle_t handle_)
115 poll_entry_t *pe =
static_cast<poll_entry_t *
> (handle_);
121 void zmq::epoll_t::reset_pollout (handle_t handle_)
124 poll_entry_t *pe =
static_cast<poll_entry_t *
> (handle_);
125 pe->ev.events &= ~(
static_cast<uint32_t
> (
EPOLLOUT));
130 void zmq::epoll_t::stop ()
135 int zmq::epoll_t::max_fds ()
140 void zmq::epoll_t::loop ()
146 const int timeout =
static_cast<int> (execute_timers ());
148 if (get_load () == 0) {
164 for (
int i = 0;
i <
n;
i++) {
165 const poll_entry_t *
const pe =
166 static_cast<const poll_entry_t *
> (ev_buf[
i].
data.
ptr);
170 if (
NULL == pe->events)
175 pe->events->in_event ();
179 pe->events->out_event ();
183 pe->events->in_event ();
187 for (retired_t::iterator
it = _retired.begin (),
end = _retired.end ();