mirror of
https://github.com/zeromq/libzmq.git
synced 2025-03-09 07:16:04 +00:00
select now uses Erase-Remove idiom for retired fds
Signed-off-by: Mikael Helbo Kjaer <mhk@designtech.dk>
This commit is contained in:
parent
085b709021
commit
0ad71f88fe
@ -191,15 +191,8 @@ void zmq::select_t::loop ()
|
||||
|
||||
// Destroy retired event sources.
|
||||
if (retired) {
|
||||
fd_set_t::iterator it = fds.begin();
|
||||
while (it != fds.end()) {
|
||||
if (it->fd == retired_fd) {
|
||||
it = fds.erase(it);
|
||||
}
|
||||
else {
|
||||
it++;
|
||||
}
|
||||
}
|
||||
fds.erase (std::remove_if (fds.begin (), fds.end (),
|
||||
zmq::select_t::is_retired_fd), fds.end ());
|
||||
retired = false;
|
||||
}
|
||||
}
|
||||
@ -209,3 +202,9 @@ void zmq::select_t::worker_routine (void *arg_)
|
||||
{
|
||||
((select_t*) arg_)->loop ();
|
||||
}
|
||||
|
||||
bool zmq::select_t::is_retired_fd (const fd_entry_t &entry)
|
||||
{
|
||||
return (entry.fd == retired_fd);
|
||||
}
|
||||
|
||||
|
@ -77,6 +77,9 @@ namespace zmq
|
||||
struct i_poll_events *events;
|
||||
};
|
||||
|
||||
// Checks if an fd_entry_t is retired.
|
||||
static bool is_retired_fd (const fd_entry_t &entry);
|
||||
|
||||
// Set of file descriptors that are used to retreive
|
||||
// information for fd_set.
|
||||
typedef std::vector <fd_entry_t> fd_set_t;
|
||||
|
Loading…
x
Reference in New Issue
Block a user