rrdfunctions.h 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  1. // SPDX-License-Identifier: GPL-3.0-or-later
  2. #ifndef NETDATA_RRDFUNCTIONS_H
  3. #define NETDATA_RRDFUNCTIONS_H 1
  4. // ----------------------------------------------------------------------------
  5. #include "../libnetdata/libnetdata.h"
  6. #define RRDFUNCTIONS_PRIORITY_DEFAULT 100
  7. #define RRDFUNCTIONS_TIMEOUT_EXTENSION_UT (1 * USEC_PER_SEC)
  8. typedef void (*rrd_function_result_callback_t)(BUFFER *wb, int code, void *result_cb_data);
  9. typedef bool (*rrd_function_is_cancelled_cb_t)(void *is_cancelled_cb_data);
  10. typedef void (*rrd_function_cancel_cb_t)(void *data);
  11. typedef void (*rrd_function_register_canceller_cb_t)(void *register_cancel_cb_data, rrd_function_cancel_cb_t cancel_cb, void *cancel_cb_data);
  12. typedef void (*rrd_function_progress_cb_t)(void *data, size_t done, size_t all);
  13. typedef void (*rrd_function_progresser_cb_t)(void *data);
  14. typedef void (*rrd_function_register_progresser_cb_t)(void *register_progresser_cb_data, rrd_function_progresser_cb_t progresser_cb, void *progresser_cb_data);
  15. struct rrd_function_execute {
  16. uuid_t *transaction;
  17. const char *function;
  18. BUFFER *payload;
  19. const char *source;
  20. usec_t *stop_monotonic_ut;
  21. struct {
  22. BUFFER *wb; // the response should be written here
  23. rrd_function_result_callback_t cb;
  24. void *data;
  25. } result;
  26. struct {
  27. rrd_function_progress_cb_t cb;
  28. void *data;
  29. } progress;
  30. struct {
  31. rrd_function_is_cancelled_cb_t cb;
  32. void *data;
  33. } is_cancelled;
  34. struct {
  35. rrd_function_register_canceller_cb_t cb;
  36. void *data;
  37. } register_canceller;
  38. struct {
  39. rrd_function_register_progresser_cb_t cb;
  40. void *data;
  41. } register_progresser;
  42. };
  43. typedef int (*rrd_function_execute_cb_t)(struct rrd_function_execute *rfe, void *data);
  44. // ----------------------------------------------------------------------------
  45. #include "rrd.h"
  46. void rrd_functions_host_init(RRDHOST *host);
  47. void rrd_functions_host_destroy(RRDHOST *host);
  48. // add a function, to be run from the collector
  49. void rrd_function_add(RRDHOST *host, RRDSET *st, const char *name, int timeout, int priority, const char *help, const char *tags,
  50. HTTP_ACCESS access, bool sync, rrd_function_execute_cb_t execute_cb,
  51. void *execute_cb_data);
  52. void rrd_function_del(RRDHOST *host, RRDSET *st, const char *name);
  53. // call a function, to be run from anywhere
  54. int rrd_function_run(RRDHOST *host, BUFFER *result_wb, int timeout_s, HTTP_ACCESS access, const char *cmd,
  55. bool wait, const char *transaction,
  56. rrd_function_result_callback_t result_cb, void *result_cb_data,
  57. rrd_function_progress_cb_t progress_cb, void *progress_cb_data,
  58. rrd_function_is_cancelled_cb_t is_cancelled_cb, void *is_cancelled_cb_data,
  59. BUFFER *payload, const char *source);
  60. int rrd_call_function_error(BUFFER *wb, const char *msg, int code);
  61. bool rrd_function_available(RRDHOST *host, const char *function);
  62. bool rrd_function_has_this_original_result_callback(uuid_t *transaction, rrd_function_result_callback_t cb);
  63. #include "rrdfunctions-inline.h"
  64. #include "rrdfunctions-inflight.h"
  65. #include "rrdfunctions-exporters.h"
  66. #include "rrdfunctions-streaming.h"
  67. #include "rrdfunctions-progress.h"
  68. #endif // NETDATA_RRDFUNCTIONS_H