]> git.ipfire.org Git - telemetry.git/commitdiff
source: Add convenience function to create a new request
authorMichael Tremer <michael.tremer@ipfire.org>
Fri, 10 Jul 2026 10:29:01 +0000 (10:29 +0000)
committerMichael Tremer <michael.tremer@ipfire.org>
Fri, 10 Jul 2026 10:29:01 +0000 (10:29 +0000)
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
src/daemon/daemon.c
src/daemon/daemon.h
src/daemon/source.c
src/daemon/source.h

index e39c7a362e37488657ad46bf6e44189b24f3e467..2e24bd6adcc22f57ed7c49e86b5ac9d58e38dc3e 100644 (file)
@@ -480,6 +480,10 @@ struct udev* td_daemon_get_udev(td_daemon* self) {
        return udev_ref(self->udev);
 }
 
+td_client* td_daemon_get_client(td_daemon* self) {
+       return td_client_ref(self->client);
+}
+
 td_sources* td_daemon_get_sources(td_daemon* self) {
        if (self->sources)
                return td_sources_ref(self->sources);
index f99b7e614d25d43c040778638d52558697f2aa43..d51402841c1e26729561a66ebbe441f5d789a51f 100644 (file)
@@ -27,6 +27,7 @@
 typedef struct td_daemon td_daemon;
 
 #include "bus.h"
+#include "client.h"
 #include "ctx.h"
 #include "graphs.h"
 #include "metrics.h"
@@ -45,6 +46,7 @@ int td_daemon_set_path(td_daemon* self, const char* path);
 
 sd_event* td_daemon_loop(td_daemon* self);
 struct udev* td_daemon_get_udev(td_daemon* self);
+td_client* td_daemon_get_client(td_daemon* self);
 td_sources* td_daemon_get_sources(td_daemon* self);
 td_graphs* td_daemon_get_graphs(td_daemon* self);
 
index 6382d50d82960d3c6364ab6874f261c4ee9c50c3..c9e4617784653bfa38fb2f84e1b18d4ea2111b61 100644 (file)
@@ -640,6 +640,27 @@ ERROR:
        return r;
 }
 
+int td_source_create_request(td_source* self, td_request** request) {
+       td_client* client = NULL;
+       int r;
+
+       // Fetch the client
+       client = td_daemon_get_client(self->daemon);
+       if (!client)
+               return -errno;
+
+       // Create the request
+       r = td_request_create(request, self->ctx, client);
+       if (r < 0)
+               goto ERROR;
+
+ERROR:
+       if (client)
+               td_client_unref(client);
+
+       return r;
+}
+
 #define td_source_path(source, object, path) \
        __td_source_path(source, object, path, sizeof(path))
 
index 67b2b2a30cd3177e8269c0f732a978b0c228bc00..fcc180cb71636e55b38e48f809d887c8ab66269c 100644 (file)
@@ -33,6 +33,7 @@ typedef struct td_source td_source;
 #include "daemon.h"
 #include "metrics.h"
 #include "netlink.h"
+#include "request.h"
 
 #define MAX_DS 64
 #define MAX_RRA 8
@@ -106,6 +107,8 @@ int td_source_create_command(td_source* self, td_command** command);
 int td_source_run_command(td_source* self, const cap_value_t* caps, const char** argv,
        td_command_success_callback callback, void* data);
 
+int td_source_create_request(td_source* self, td_request** request);
+
 int td_source_parse_metrics(td_source* self, const char* object,
        td_file* file, const td_metrics_parser* parser);