| 185 | */ |
| 186 | template <typename SocketT> |
| 187 | typename epollset<SocketT>::ready_socks epollset<SocketT>::wait(int timeout) { |
| 188 | int nfds; |
| 189 | ready_socks ready; |
| 190 | |
| 191 | if (0 > (nfds = epoll_wait(epollfd, events, maxevents, timeout))) |
| 192 | throw socket_exception(__FILE__, __LINE__, |
| 193 | string("epoll_wait failed: ") + strerror(errno)); |
| 194 | |
| 195 | for (int i = 0; i < nfds; i++) { |
| 196 | if (events[i].events == EPOLLIN) |
| 197 | ready.first.push_back(static_cast<SocketT*>(events[i].data.ptr)); |
| 198 | if (events[i].events == EPOLLOUT) |
| 199 | ready.second.push_back(static_cast<SocketT*>(events[i].data.ptr)); |
| 200 | } |
| 201 | |
| 202 | return ready; |
| 203 | } |
| 204 | |
| 205 | } // namespace libsocket |
| 206 | #endif |
no test coverage detected