From 04c2dcffc0fa862af56eb5ff6fb57fd672745c3e Mon Sep 17 00:00:00 2001 From: Trumeet Date: Tue, 26 Jul 2022 17:42:18 -0700 Subject: fix(acronc): code cleanup Signed-off-by: Trumeet --- client/acronc/handler.h | 22 +--------------------- client/acronc/handler_signal.c | 19 +++++-------------- client/acronc/main.c | 2 +- 3 files changed, 7 insertions(+), 36 deletions(-) (limited to 'client/acronc') diff --git a/client/acronc/handler.h b/client/acronc/handler.h index 1a2ccfe..5764387 100644 --- a/client/acronc/handler.h +++ b/client/acronc/handler.h @@ -8,29 +8,9 @@ #include #include -enum exit_reason { - /* Exit due to a signal. Socket is working. */ - EXIT_SIGNAL, - /* Exit due to an EOF from stdin. Socket is working. */ - EXIT_STDIN_EOF, - /* Exit due to an EOF from socket. Socket is closed. */ - EXIT_SOCKET_EOF, - /* Exit due to a socket failure. Socket is closed. */ - EXIT_FAILURE_SOCKET, - /* Exit due to a failure. Socket is working. */ - EXIT_FAILURE -}; - -struct uv_obj { - void *obj; - bool running; -}; - extern uv_loop_t *loop; -extern void (*on_exit)(enum exit_reason reason); - -int h_signal(void); +int h_signal(void (*on_quit)(void)); int h_stdin(int (*on_input)(ac_request_t *req), void (*on_close)(void)); diff --git a/client/acronc/handler_signal.c b/client/acronc/handler_signal.c index 1d0ba7e..d5df9d4 100644 --- a/client/acronc/handler_signal.c +++ b/client/acronc/handler_signal.c @@ -6,35 +6,26 @@ #include "log.h" static uv_signal_t sigint; -static struct uv_obj obj_sigint = { - .obj = &sigint, - .running = false -}; static uv_signal_t sigterm; -static struct uv_obj obj_sigterm = { - .obj = &sigterm, - .running = false -}; static void on_signal(uv_signal_t *handle, int signum) { LOGDV("on_signal(handle = %p): %d", handle, signum); + void (*on_quit)(void) = handle->data; uv_signal_stop(&sigint); - obj_sigint.running = false; uv_signal_stop(&sigterm); - obj_sigterm.running = false; - on_exit(EXIT_SIGNAL); + on_quit(); } -int h_signal(void) { +int h_signal(void (*on_quit)(void)) { int r; if ((r = uv_signal_init(loop, &sigint))) return r; + sigint.data = on_quit; if ((r = uv_signal_start(&sigint, on_signal, SIGINT))) return r; - obj_sigint.running = true; if ((r = uv_signal_init(loop, &sigterm))) return r; + sigterm.data = on_quit; if ((r = uv_signal_start(&sigterm, on_signal, SIGTERM))) return r; - obj_sigterm.running = true; return 0; } diff --git a/client/acronc/main.c b/client/acronc/main.c index 6e18ed2..6a473ed 100644 --- a/client/acronc/main.c +++ b/client/acronc/main.c @@ -89,7 +89,7 @@ int main(int argc, const char **argv) { if ((r = ac_init(&config))) errx(r, "Cannot initialize Acron library."); if ((r = uv_loop_init(loop))) goto uviniterr; - if ((r = h_signal())) goto uviniterr; + if ((r = h_signal(on_stdin_closed))) goto uviniterr; if ((r = a_dns(params.host, params.port, on_resolv))) goto uviniterr; if ((r = uv_run(loop, UV_RUN_DEFAULT))) { -- cgit v1.2.3