From: Michael Tremer Date: Fri, 10 Jul 2026 11:12:11 +0000 (+0000) Subject: request: Add success/failure callbacks X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=b326587bc0ec522e82049a0c6765d3cd7a230a9c;p=telemetry.git request: Add success/failure callbacks Signed-off-by: Michael Tremer --- diff --git a/src/daemon/request.c b/src/daemon/request.c index edbad69..0be94ad 100644 --- a/src/daemon/request.c +++ b/src/daemon/request.c @@ -46,6 +46,17 @@ struct td_request { // Output Buffer td_buffer* buffer; + + // Callbacks + struct { + // On success + td_request_success_callback on_success; + void* on_success_data; + + // On failure + td_request_failure_callback on_failure; + void* on_failure_data; + } callbacks; }; static int td_request_debug_callback(CURL *handle, curl_infotype type, @@ -258,6 +269,18 @@ int td_request_set_url(td_request* self, const char* url) { return 0; } +void td_request_on_success(td_request* self, + td_request_success_callback callback, void* data) { + self->callbacks.on_success = callback; + self->callbacks.on_success_data = data; +} + +void td_request_on_failure(td_request* self, + td_request_failure_callback callback, void* data) { + self->callbacks.on_failure = callback; + self->callbacks.on_failure_data = data; +} + CURL* td_request_handle(td_request* self) { return self->handle; } diff --git a/src/daemon/request.h b/src/daemon/request.h index dcd8af8..effbef8 100644 --- a/src/daemon/request.h +++ b/src/daemon/request.h @@ -27,6 +27,7 @@ typedef struct td_request td_request; #include "client.h" #include "ctx.h" +#include "file.h" int td_request_create(td_request** request, td_ctx* ctx, td_client* client); @@ -36,6 +37,19 @@ td_request* td_request_unref(td_request* self); char* td_request_get_url(td_request* self); int td_request_set_url(td_request* self, const char* url); +typedef int (*td_request_success_callback) + (td_ctx* ctx, td_file* file, void* data); +typedef int (*td_request_failure_callback) + (td_ctx* ctx, int rc, td_file* file, void* data); + +// Called if the request has exited successfully +void td_request_on_success(td_request* self, + td_request_success_callback callback, void* data); + +// Called if the request has failed +void td_request_on_failure(td_request* self, + td_request_failure_callback callback, void* data); + CURL* td_request_handle(td_request* self); int td_request_launch(td_request* self);