summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMikhail Burakov <mburakov@mailbox.org>2022-12-26 12:14:46 +0100
committerMikhail Burakov <mburakov@mailbox.org>2022-12-26 12:14:46 +0100
commit1b661ca51f4bd42c9aeba8dbedff691d69623263 (patch)
treed3058929cddd521dacb6001cc27b051a48bade48
parent98457dcd5c0913679395a1a22442cef97212f03c (diff)
Remove inner loop from io muxer
-rw-r--r--io_muxer.c29
-rw-r--r--io_muxer.h3
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);