From: Michael Tremer Date: Tue, 13 Aug 2024 19:36:31 +0000 (+0000) Subject: daemon: Register any workers X-Git-Tag: 0.9.30~1203 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=dd8404eef056cb59887334a2fb3aa919688e1252;p=pakfire.git daemon: Register any workers Signed-off-by: Michael Tremer --- diff --git a/src/libpakfire/daemon.c b/src/libpakfire/daemon.c index 3887a042e..beca68728 100644 --- a/src/libpakfire/daemon.c +++ b/src/libpakfire/daemon.c @@ -30,6 +30,8 @@ #include #include +#define MAX_WORKERS 64 + struct pakfire_daemon { struct pakfire_ctx* ctx; int nrefs; @@ -43,6 +45,10 @@ struct pakfire_daemon { // Connection Timer and Holdoff Time sd_event_source* connect_timer; unsigned int reconnect_holdoff; + + // Workers + struct pakfire_worker* workers[MAX_WORKERS]; + unsigned int running_workers; }; static int pakfire_daemon_terminate(sd_event_source* source, @@ -74,12 +80,27 @@ static int pakfire_daemon_job(struct pakfire_daemon* daemon, json_object* m) { if (r) { CTX_ERROR(daemon->ctx, "Could not create a new worker: %s\n", strerror(-r)); - return r; + goto ERROR; + } + + // Store the new worker + for (unsigned int i = 0; i < MAX_WORKERS; i++) { + if (!daemon->workers[i]) { + daemon->workers[i] = pakfire_worker_ref(worker); + break; + } } + // Increment the number of running workers + daemon->running_workers++; + // XXX TODO We need to do something with the new worker - return 0; +ERROR: + if (worker) + pakfire_worker_unref(worker); + + return r; } static int pakfire_daemon_recv(struct pakfire_xfer* xfer,