From abf520572becc96e2335af5518f76d4b724dddd1 Mon Sep 17 00:00:00 2001 From: Michal Bloch Date: Mon, 18 Jan 2021 15:59:32 +0100 Subject: [PATCH] Add a basic write-socket request dispatcher In anticipation of new request types for that socket type. Change-Id: I9cd8e1035f8c225158b9717e81469c1e5e1d17cd Signed-off-by: Michal Bloch --- src/logger/log_buffer.c | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/src/logger/log_buffer.c b/src/logger/log_buffer.c index 4111587..7505a99 100644 --- a/src/logger/log_buffer.c +++ b/src/logger/log_buffer.c @@ -303,6 +303,25 @@ err_close: return r; } + +static int service_writer_handle_req_write(struct logger *server, struct writer *wr, struct dlog_control_msg *msg) +{ + assert(server); + assert(wr); + assert(msg); + + switch (msg->request) { + case DLOG_REQ_PIPE: return service_writer_handle_req_pipe(server, wr, msg); + + default: return -EINVAL; + } + + /* NB: unlike for the control socket, resetting `wr->readed` + * is the responsibility of the specific request handlers, + * since they may obsolete the need by modifying the connection, + * in particular, reset it via morph to a pipe */ +} + /** * @brief Create buffer * @details Allocate a buffer structure @@ -334,7 +353,7 @@ int buffer_create(struct log_buffer **log_buffer, log_id_t buf_id, struct buffer return r; } - r = socket_initialize(&lb->sock_wr, lb, service_writer_handle_req_pipe, &data->write_socket); + r = socket_initialize(&lb->sock_wr, lb, service_writer_handle_req_write, &data->write_socket); if (r < 0) { socket_close(&lb->sock_ctl); log_storage_free(lb->log_storage_ptr); -- 2.7.4