diff --git a/src/util/epoll_manager.cpp b/src/util/epoll_manager.cpp index 7dc127ae..4a299e57 100644 --- a/src/util/epoll_manager.cpp +++ b/src/util/epoll_manager.cpp @@ -3,6 +3,7 @@ #include #include +#include #include #include @@ -74,6 +75,27 @@ void epoll_manager_t::set_fd_handler(int fd, bool wr, std::function 0) + { + auto events = ((initpoll.revents & POLLOUT) ? EPOLLOUT : 0) | + ((initpoll.revents & POLLIN) ? EPOLLIN : 0) | + ((initpoll.revents & POLLRDHUP) ? EPOLLRDHUP : 0); + tfd->set_timer_us(1, false, [this, fd, events](int) + { + auto cb_it = epoll_handlers.find(fd); + if (cb_it != epoll_handlers.end()) + { + auto & cb = cb_it->second; + cb(fd, events); + } + }); + } } else {