diff options
Diffstat (limited to 'database/rrdfunctions.h')
-rw-r--r-- | database/rrdfunctions.h | 101 |
1 files changed, 56 insertions, 45 deletions
diff --git a/database/rrdfunctions.h b/database/rrdfunctions.h index c3013da8ff..11d657ff27 100644 --- a/database/rrdfunctions.h +++ b/database/rrdfunctions.h @@ -4,7 +4,7 @@ // ---------------------------------------------------------------------------- -#include "rrd.h" +#include "../libnetdata/libnetdata.h" #define RRDFUNCTIONS_PRIORITY_DEFAULT 100 @@ -18,65 +18,76 @@ 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); -typedef int (*rrd_function_execute_cb_t)(uuid_t *transaction, BUFFER *wb, - usec_t *stop_monotonic_ut, const char *function, void *collector_data, - 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, - rrd_function_register_canceller_cb_t register_canceller_cb, void *register_canceller_cb_data, - rrd_function_register_progresser_cb_t register_progresser_cb, void *register_progresser_cb_data); +struct rrd_function_execute { + uuid_t *transaction; + const char *function; + BUFFER *payload; + const char *source; + + 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; -void rrd_functions_inflight_init(void); -void rrdfunctions_host_init(RRDHOST *host); -void rrdfunctions_host_destroy(RRDHOST *host); + 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 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, const char *payload); - -// cancel a running function, to be run from anywhere -void rrd_function_cancel(const char *transaction); -void rrd_function_progress(const char *transaction); -void rrd_function_call_progresser(uuid_t *transaction); + rrd_function_is_cancelled_cb_t is_cancelled_cb, void *is_cancelled_cb_data, + BUFFER *payload, const char *source); -void rrd_functions_expose_rrdpush(RRDSET *st, BUFFER *wb); -void rrd_functions_expose_global_rrdpush(RRDHOST *host, BUFFER *wb); +int rrd_call_function_error(BUFFER *wb, const char *msg, int code); -void chart_functions2json(RRDSET *st, BUFFER *wb); -void chart_functions_to_dict(DICTIONARY *rrdset_functions_view, DICTIONARY *dst, void *value, size_t value_size); -void host_functions_to_dict(RRDHOST *host, DICTIONARY *dst, void *value, size_t value_size, STRING **help, STRING **tags, HTTP_ACCESS *access, int *priority); -void host_functions2json(RRDHOST *host, BUFFER *wb); +bool rrd_function_available(RRDHOST *host, const char *function); -uint8_t functions_format_to_content_type(const char *format); -const char *functions_content_type_to_format(HTTP_CONTENT_TYPE content_type); -int rrd_call_function_error(BUFFER *wb, const char *msg, int code); +bool rrd_function_has_this_original_result_callback(uuid_t *transaction, rrd_function_result_callback_t cb); -int rrdhost_function_progress(uuid_t *transaction, BUFFER *wb, - usec_t *stop_monotonic_ut, const char *function, void *collector_data, - 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, - rrd_function_register_canceller_cb_t register_canceller_cb, void *register_canceller_cb_data, - rrd_function_register_progresser_cb_t register_progresser_cb, - void *register_progresser_cb_data); - -int rrdhost_function_streaming(uuid_t *transaction, BUFFER *wb, - usec_t *stop_monotonic_ut, const char *function, void *collector_data, - 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, - rrd_function_register_canceller_cb_t register_canceller_cb, void *register_canceller_cb_data, - rrd_function_register_progresser_cb_t register_progresser_cb, - void *register_progresser_cb_data); - -#define RRDFUNCTIONS_STREAMING_HELP "Streaming status for parents and children." +#include "rrdfunctions-inline.h" +#include "rrdfunctions-inflight.h" +#include "rrdfunctions-exporters.h" +#include "rrdfunctions-streaming.h" +#include "rrdfunctions-progress.h" #endif // NETDATA_RRDFUNCTIONS_H |