Beispiel #1
0
zmq::devpoll_t::handle_t zmq::devpoll_t::add_fd (fd_t fd_,
    i_poll_events *reactor_)
{
    //  If the file descriptor table is too small expand it.
    fd_table_t::size_type sz = fd_table.size ();
    if (sz <= (fd_table_t::size_type) fd_) {
        fd_table.resize (fd_ + 1);
        while (sz != (fd_table_t::size_type) (fd_ + 1)) {
            fd_table [sz].valid = false;
            ++sz;
        }
    }

    zmq_assert (!fd_table [fd_].valid);

    fd_table [fd_].events = 0;
    fd_table [fd_].reactor = reactor_;
    fd_table [fd_].valid = true;
    fd_table [fd_].accepted = false;

    devpoll_ctl (fd_, 0);
    pending_list.push_back (fd_);

    //  Increase the load metric of the thread.
    adjust_load (1);

    return fd_;
}
Beispiel #2
0
void zmq::devpoll_t::rm_fd (handle_t handle_)
{
    zmq_assert (fd_table [handle_].valid);

    devpoll_ctl (handle_, POLLREMOVE);
    fd_table [handle_].valid = false;

    //  Decrease the load metric of the thread.
    adjust_load (-1);
}
Beispiel #3
0
zmq::devpoll_t::handle_t zmq::devpoll_t::add_fd (fd_t fd_,
    i_poll_events *reactor_)
{
    assert (!fd_table [fd_].valid);

    fd_table [fd_].events = 0;
    fd_table [fd_].reactor = reactor_;
    fd_table [fd_].valid = true;
    fd_table [fd_].accepted = false;

    devpoll_ctl (fd_, 0);
    pending_list.push_back (fd_);

    //  Increase the load metric of the thread.
    adjust_load (1);

    return fd_;
}
Beispiel #4
0
void zmq::devpoll_t::set_pollin (handle_t handle_)
{
    devpoll_ctl (handle_, POLLREMOVE);
    fd_table [handle_].events |= POLLIN;
    devpoll_ctl (handle_, fd_table [handle_].events);
}
Beispiel #5
0
void zmq::devpoll_t::reset_pollout (handle_t handle_)
{
    devpoll_ctl (handle_, POLLREMOVE);
    fd_table [handle_].events &= ~((short) POLLOUT);
    devpoll_ctl (handle_, fd_table [handle_].events);
}