From a3d80accc324ff1d119210d1f597f1936fd5e345 Mon Sep 17 00:00:00 2001 From: Michal Bloch Date: Wed, 4 Oct 2023 10:11:15 +0200 Subject: [PATCH] Starting a reader: expose MT dispatcher Expose a MT dispatcher instead of the raw 'add reader to server' func. Note that this doesn't change logic and the raw func is still used. Change-Id: I4c546d8e3479b7498c9ed2def85b7f710672b075 --- src/logger/log_buffer.c | 11 +---------- src/logger/logger.c | 10 +++++++++- src/logger/logger_internal.h | 2 +- 3 files changed, 11 insertions(+), 12 deletions(-) diff --git a/src/logger/log_buffer.c b/src/logger/log_buffer.c index 90eeaf1..9f0c1be 100644 --- a/src/logger/log_buffer.c +++ b/src/logger/log_buffer.c @@ -260,16 +260,7 @@ static int distribute_pipes(struct logger *server, struct reader_common *reader, if (rs) return false; - if (server->mt_readers) { - const int rr = reader_run(reader); - return rr == 0; - } - - const int ra = add_reader_to_server(reader, server); - if (ra < 0) - return false; - - return true; + return dispatch_run_reader(server, reader); } int req_init_reader_pipe(struct logger *server, struct writer *wr, void *reader, struct dlogutil_line_params *params) diff --git a/src/logger/logger.c b/src/logger/logger.c index 93ee182..7761f7e 100644 --- a/src/logger/logger.c +++ b/src/logger/logger.c @@ -119,7 +119,7 @@ void flush_logfile_timely(struct log_file *file, struct timespec ts, int flush_t logfile_flush(file); } -int add_reader_to_server(struct reader_common *reader, struct logger *server) +static int add_reader_to_server(struct reader_common *reader, struct logger *server) { assert(reader); assert(server); @@ -151,6 +151,14 @@ int add_reader_to_server(struct reader_common *reader, struct logger *server) return 0; } +bool dispatch_run_reader(struct logger *server, struct reader_common *reader) +{ + if (server->mt_readers) + return reader_run(reader) == 0; + else + return add_reader_to_server(reader, server) >= 0; +} + __attribute__((noreturn)) static void thread_seppuku(pthread_t self) { assert(self == pthread_self()); diff --git a/src/logger/logger_internal.h b/src/logger/logger_internal.h index cfd2dcc..2d2c689 100644 --- a/src/logger/logger_internal.h +++ b/src/logger/logger_internal.h @@ -185,7 +185,7 @@ int service_writer_socket(struct logger *server, struct writer *wr, struct epoll int service_writer_syslog(struct logger *server, struct writer *wr, struct epoll_event *event); void logger_add_writer(struct logger *l, struct writer *wr); int create_fifo_fds(struct logger *server, int pipe_fd[2], int flags, bool dump); -int add_reader_to_server(struct reader_common *reader, struct logger *server); +bool dispatch_run_reader(struct logger *server, struct reader_common *reader); void flush_logfile_timely(struct log_file *file, struct timespec ts, int flush_time); int get_now(struct now_t *now); void reader_thread_finished(struct reader_common *reader); -- 2.7.4