diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-05-05 12:08:03 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-05-05 12:08:18 +0000 |
commit | 5da14042f70711ea5cf66e034699730335462f66 (patch) | |
tree | 0f6354ccac934ed87a2d555f45be4c831cf92f4a /src/database/rrdfunctions.h | |
parent | Releasing debian version 1.44.3-2. (diff) | |
download | netdata-5da14042f70711ea5cf66e034699730335462f66.tar.xz netdata-5da14042f70711ea5cf66e034699730335462f66.zip |
Merging upstream version 1.45.3+dfsg.
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to '')
-rw-r--r-- | src/database/rrdfunctions.h | 96 |
1 files changed, 96 insertions, 0 deletions
diff --git a/src/database/rrdfunctions.h b/src/database/rrdfunctions.h new file mode 100644 index 000000000..c9df26f4d --- /dev/null +++ b/src/database/rrdfunctions.h @@ -0,0 +1,96 @@ +// SPDX-License-Identifier: GPL-3.0-or-later +#ifndef NETDATA_RRDFUNCTIONS_H +#define NETDATA_RRDFUNCTIONS_H 1 + +// ---------------------------------------------------------------------------- + +#include "libnetdata/libnetdata.h" + +#define RRDFUNCTIONS_PRIORITY_DEFAULT 100 + +#define RRDFUNCTIONS_TIMEOUT_EXTENSION_UT (1 * USEC_PER_SEC) + +typedef void (*rrd_function_result_callback_t)(BUFFER *wb, int code, void *result_cb_data); +typedef bool (*rrd_function_is_cancelled_cb_t)(void *is_cancelled_cb_data); +typedef void (*rrd_function_cancel_cb_t)(void *data); +typedef void (*rrd_function_register_canceller_cb_t)(void *register_cancel_cb_data, rrd_function_cancel_cb_t cancel_cb, void *cancel_cb_data); +typedef void (*rrd_function_progress_cb_t)(void *data, size_t done, size_t all); +typedef void (*rrd_function_progresser_cb_t)(void *data); +typedef void (*rrd_function_register_progresser_cb_t)(void *register_progresser_cb_data, rrd_function_progresser_cb_t progresser_cb, void *progresser_cb_data); + +struct rrd_function_execute { + uuid_t *transaction; + const char *function; + BUFFER *payload; + const char *source; + + HTTP_ACCESS user_access; + + usec_t *stop_monotonic_ut; + + struct { + BUFFER *wb; // the response should be written here + rrd_function_result_callback_t cb; + void *data; + } result; + + struct { + rrd_function_progress_cb_t cb; + void *data; + } progress; + + struct { + rrd_function_is_cancelled_cb_t cb; + void *data; + } is_cancelled; + + struct { + rrd_function_register_canceller_cb_t cb; + void *data; + } register_canceller; + + struct { + rrd_function_register_progresser_cb_t cb; + void *data; + } register_progresser; +}; + +typedef int (*rrd_function_execute_cb_t)(struct rrd_function_execute *rfe, void *data); + + +// ---------------------------------------------------------------------------- + +#include "rrd.h" + +void rrd_functions_host_init(RRDHOST *host); +void rrd_functions_host_destroy(RRDHOST *host); + +// add a function, to be run from the collector +void rrd_function_add(RRDHOST *host, RRDSET *st, const char *name, int timeout, int priority, const char *help, const char *tags, + HTTP_ACCESS access, bool sync, rrd_function_execute_cb_t execute_cb, + void *execute_cb_data); + +void rrd_function_del(RRDHOST *host, RRDSET *st, const char *name); + +// call a function, to be run from anywhere +int rrd_function_run(RRDHOST *host, BUFFER *result_wb, int timeout_s, + HTTP_ACCESS user_access, const char *cmd, + bool wait, const char *transaction, + rrd_function_result_callback_t result_cb, void *result_cb_data, + rrd_function_progress_cb_t progress_cb, void *progress_cb_data, + rrd_function_is_cancelled_cb_t is_cancelled_cb, void *is_cancelled_cb_data, + BUFFER *payload, const char *source); + +int rrd_call_function_error(BUFFER *wb, const char *msg, int code); + +bool rrd_function_available(RRDHOST *host, const char *function); + +bool rrd_function_has_this_original_result_callback(uuid_t *transaction, rrd_function_result_callback_t cb); + +#include "rrdfunctions-inline.h" +#include "rrdfunctions-inflight.h" +#include "rrdfunctions-exporters.h" +#include "rrdfunctions-streaming.h" +#include "rrdfunctions-progress.h" + +#endif // NETDATA_RRDFUNCTIONS_H |