]> git.ipfire.org Git - telemetry.git/commitdiff
request: Add success/failure callbacks
authorMichael Tremer <michael.tremer@ipfire.org>
Fri, 10 Jul 2026 11:12:11 +0000 (11:12 +0000)
committerMichael Tremer <michael.tremer@ipfire.org>
Fri, 10 Jul 2026 11:12:11 +0000 (11:12 +0000)
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
src/daemon/request.c
src/daemon/request.h

index edbad697ebd6cc0edcc5f5ad498d3de047f930de..0be94ad2deab02587ea5aef726b1f4d29eae4dee 100644 (file)
@@ -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;
 }
index dcd8af81f1c23a7ebbb524996667097758bb35e4..effbef8204a373aee54f92d8f8df4337d5cb799b 100644 (file)
@@ -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);