diff options
Diffstat (limited to 'io_muxer.c')
-rw-r--r-- | io_muxer.c | 8 |
1 files changed, 7 insertions, 1 deletions
@@ -98,12 +98,18 @@ enum IoMuxerResult IoMuxerIterate(struct IoMuxer* io_muxer, int timeout) { break; } for (size_t i = 0; i < io_muxer->size; i++) { - if (io_muxer->pfds[i].revents) + if (io_muxer->pfds[i].revents && io_muxer->pfds[i].revents != POLLNVAL) io_muxer->tasks[i].fun(io_muxer->tasks[i].user); } return kIoMuxerResultSuccess; } +void IoMuxerForget(struct IoMuxer* io_muxer, int fd) { + for (size_t i = 0; i < io_muxer->size; i++) { + if (io_muxer->pfds[i].fd == fd) io_muxer->pfds[i].revents = POLLNVAL; + } +} + void IoMuxerDestroy(struct IoMuxer* io_muxer) { free(io_muxer->pfds); free(io_muxer->tasks); |