From 1b661ca51f4bd42c9aeba8dbedff691d69623263 Mon Sep 17 00:00:00 2001 From: Mikhail Burakov Date: Mon, 26 Dec 2022 12:14:46 +0100 Subject: Remove inner loop from io muxer --- io_muxer.c | 29 ++++++++++++++--------------- io_muxer.h | 3 ++- 2 files changed, 16 insertions(+), 16 deletions(-) diff --git a/io_muxer.c b/io_muxer.c index 17b32a9..4c4c0e2 100644 --- a/io_muxer.c +++ b/io_muxer.c @@ -87,22 +87,21 @@ bool IoMuxerOnWrite(struct IoMuxer* io_muxer, int fd, void (*fun)(void*), } enum IoMuxerResult IoMuxerIterate(struct IoMuxer* io_muxer, int timeout) { - for (;;) { - CompressRecords(io_muxer); - int result = poll(io_muxer->pfds, io_muxer->size, timeout); - switch (result) { - case -1: - return kIoMuxerResultError; - case 0: - return kIoMuxerResultTimeout; - default: - break; - } - for (size_t i = 0; i < io_muxer->size; i++) { - if (io_muxer->pfds[i].revents) - io_muxer->tasks[i].fun(io_muxer->tasks[i].user); - } + CompressRecords(io_muxer); + int result = poll(io_muxer->pfds, io_muxer->size, timeout); + switch (result) { + case -1: + return kIoMuxerResultError; + case 0: + return kIoMuxerResultTimeout; + default: + break; + } + for (size_t i = 0; i < io_muxer->size; i++) { + if (io_muxer->pfds[i].revents) + io_muxer->tasks[i].fun(io_muxer->tasks[i].user); } + return kIoMuxerResultSuccess; } void IoMuxerDestroy(struct IoMuxer* io_muxer) { diff --git a/io_muxer.h b/io_muxer.h index 8fbfc85..ae6b88f 100644 --- a/io_muxer.h +++ b/io_muxer.h @@ -36,8 +36,9 @@ struct IoMuxer { }; enum IoMuxerResult { - kIoMuxerResultError = 0, + kIoMuxerResultSuccess = 0, kIoMuxerResultTimeout, + kIoMuxerResultError, }; void IoMuxerCreate(struct IoMuxer* io_muxer); -- cgit v1.2.3