From 40ad83dc6a95791bd20e214d2eb1b135900d47cc Mon Sep 17 00:00:00 2001 From: David Oberhollenzer Date: Mon, 18 Mar 2019 14:08:17 +0100 Subject: initd: implement handling of socket requests Actually process requests and send an answer to status inquiries. Signed-off-by: David Oberhollenzer --- initd/supervisor.c | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) (limited to 'initd/supervisor.c') diff --git a/initd/supervisor.c b/initd/supervisor.c index 3ed0ec7..3743ad6 100644 --- a/initd/supervisor.c +++ b/initd/supervisor.c @@ -167,3 +167,29 @@ bool supervisor_process_queues(void) target_completed(target); return true; } + +static int send_svc_list(int fd, const void *dst, size_t addrlen, + E_SERVICE_STATE state, service_t *list) +{ + while (list != NULL) { + if (init_socket_send_status(fd, dst, addrlen, state, list)) + return -1; + + list = list->next; + } + + return 0; +} + +void supervisor_answer_status_request(int fd, const void *dst, size_t addrlen) +{ + if (send_svc_list(fd, dst, addrlen, ESS_RUNNING, running)) + return; + if (send_svc_list(fd, dst, addrlen, ESS_EXITED, completed)) + return; + if (send_svc_list(fd, dst, addrlen, ESS_ENQUEUED, queue)) + return; + if (send_svc_list(fd, dst, addrlen, ESS_ENQUEUED, terminated)) + return; + init_socket_send_status(fd, dst, addrlen, ESS_NONE, NULL); +} -- cgit v1.2.3