ac17e726aac16f0d95becf522189d334fae9db2e
12 bool Poll::operator() (const vector
<int> &fds
) {
15 pfds
.reserve(fds
.size());
17 pfds
.emplace_back(pollfd
{fd
, events
, 0});
20 while (!pfds
.empty() && timeout
<= max
) {
21 auto nfds
= poll(pfds
.data(), pfds
.size(), timeout
);
24 perror("Poll::() poll()");
30 timeout
= ceil(static_cast<float>(timeout
) * growth
);
34 auto pred
= [](const pollfd
&pfd
){
35 return pfd
.revents
& POLLHUP
36 || pfd
.revents
& POLLERR
37 || pfd
.revents
& pfd
.events
;
39 auto iter
= remove_if(pfds
.begin(), pfds
.end(), pred
);
40 pfds
.erase(iter
, pfds
.end());