From: Michael Tremer Date: Mon, 29 Sep 2025 17:50:02 +0000 (+0000) Subject: daemon: Generalize the init/exit functions X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=12131745ee9ddc74716338d719adb733e3b9de61;p=collecty.git daemon: Generalize the init/exit functions Signed-off-by: Michael Tremer --- diff --git a/src/daemon/daemon.c b/src/daemon/daemon.c index bb3358f..d45429e 100644 --- a/src/daemon/daemon.c +++ b/src/daemon/daemon.c @@ -45,7 +45,8 @@ struct collecty_daemon { sd_event_source* sigterm; sd_event_source* sigint; sd_event_source* sighup; - sd_event_source* modules_init; + sd_event_source* init; + sd_event_source* exit; } events; // Bus @@ -55,11 +56,21 @@ struct collecty_daemon { collecty_queue* queue; }; -static int collecty_daemon_modules_init(sd_event_source* source, void* data) { - collecty_daemon* daemon = data; +static int collecty_daemon_init(sd_event_source* source, void* data) { + collecty_daemon* self = data; + + DEBUG(self->ctx, "Initializing daemon...\n"); // Initialize all modules - return collecty_modules_init(daemon->ctx, daemon); + return collecty_modules_init(self->ctx, self); +} + +static int collecty_daemon_exit(sd_event_source* source, void* data) { + collecty_daemon* self = data; + + DEBUG(self->ctx, "Cleaning up daemon...\n"); + + return 0; } static int collecty_daemon_terminate(sd_event_source* source, @@ -118,11 +129,19 @@ static int collecty_daemon_setup_loop(collecty_daemon* self) { return r; } - // Initialize all modules when the loop starts - r = sd_event_add_defer(self->loop, &self->events.modules_init, - collecty_daemon_modules_init, self); + // Initialize the daemon when the loop starts + r = sd_event_add_defer(self->loop, &self->events.init, + collecty_daemon_init, self); + if (r < 0) { + ERROR(self->ctx, "Failed to register daemon init: %s\n", strerror(-r)); + return r; + } + + // Cleanup when the event loop exits + r = sd_event_add_exit(self->loop, &self->events.exit, + collecty_daemon_exit, self); if (r < 0) { - ERROR(self->ctx, "Failed to register module init: %s\n", strerror(-r)); + ERROR(self->ctx, "Failed to register daemon exit: %s\n", strerror(-r)); return r; } @@ -130,14 +149,16 @@ static int collecty_daemon_setup_loop(collecty_daemon* self) { } static void collecty_daemon_free(collecty_daemon* self) { - if (self->events.modules_init) - sd_event_source_unref(self->events.modules_init); if (self->events.sigterm) sd_event_source_unref(self->events.sigterm); if (self->events.sigint) sd_event_source_unref(self->events.sigint); if (self->events.sighup) sd_event_source_unref(self->events.sighup); + if (self->events.init) + sd_event_source_unref(self->events.init); + if (self->events.exit) + sd_event_source_unref(self->events.exit); if (self->queue) collecty_queue_unref(self->queue); if (self->ctx)