aclk_util.h 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103
  1. // SPDX-License-Identifier: GPL-3.0-or-later
  2. #ifndef ACLK_UTIL_H
  3. #define ACLK_UTIL_H
  4. #include "libnetdata/libnetdata.h"
  5. #include "mqtt_wss_client.h"
  6. // Helper stuff which should not have any further inside ACLK dependency
  7. // and are supposed not to be needed outside of ACLK
  8. extern int aclk_use_new_cloud_arch;
  9. extern usec_t aclk_session_newarch;
  10. extern int chart_batch_id;
  11. typedef enum {
  12. ACLK_ENC_UNKNOWN = 0,
  13. ACLK_ENC_JSON,
  14. ACLK_ENC_PROTO
  15. } aclk_encoding_type_t;
  16. typedef enum {
  17. ACLK_TRP_UNKNOWN = 0,
  18. ACLK_TRP_MQTT_3_1_1,
  19. ACLK_TRP_MQTT_5
  20. } aclk_transport_type_t;
  21. typedef struct {
  22. char *endpoint;
  23. aclk_transport_type_t type;
  24. } aclk_transport_desc_t;
  25. typedef struct {
  26. int base;
  27. int max_s;
  28. int min_s;
  29. } aclk_backoff_t;
  30. typedef struct {
  31. char *auth_endpoint;
  32. aclk_encoding_type_t encoding;
  33. aclk_transport_desc_t **transports;
  34. size_t transport_count;
  35. char **capabilities;
  36. size_t capability_count;
  37. aclk_backoff_t backoff;
  38. } aclk_env_t;
  39. extern aclk_env_t *aclk_env;
  40. aclk_encoding_type_t aclk_encoding_type_t_from_str(const char *str);
  41. aclk_transport_type_t aclk_transport_type_t_from_str(const char *str);
  42. void aclk_transport_desc_t_destroy(aclk_transport_desc_t *trp_desc);
  43. void aclk_env_t_destroy(aclk_env_t *env);
  44. int aclk_env_has_capa(const char *capa);
  45. enum aclk_topics {
  46. ACLK_TOPICID_UNKNOWN = 0,
  47. ACLK_TOPICID_CHART = 1,
  48. ACLK_TOPICID_ALARMS = 2,
  49. ACLK_TOPICID_METADATA = 3,
  50. ACLK_TOPICID_COMMAND = 4,
  51. ACLK_TOPICID_AGENT_CONN = 5,
  52. ACLK_TOPICID_CMD_NG_V1 = 6,
  53. ACLK_TOPICID_CREATE_NODE = 7,
  54. ACLK_TOPICID_NODE_CONN = 8,
  55. ACLK_TOPICID_CHART_DIMS = 9,
  56. ACLK_TOPICID_CHART_CONFIGS_UPDATED = 10,
  57. ACLK_TOPICID_CHART_RESET = 11,
  58. ACLK_TOPICID_RETENTION_UPDATED = 12,
  59. ACLK_TOPICID_NODE_INFO = 13,
  60. ACLK_TOPICID_ALARM_LOG = 14,
  61. ACLK_TOPICID_ALARM_HEALTH = 15,
  62. ACLK_TOPICID_ALARM_CONFIG = 16,
  63. ACLK_TOPICID_ALARM_SNAPSHOT = 17
  64. };
  65. const char *aclk_get_topic(enum aclk_topics topic);
  66. int aclk_generate_topic_cache(struct json_object *json);
  67. void free_topic_cache(void);
  68. // TODO
  69. // aclk_topics_reload //when claim id changes
  70. #ifdef ACLK_LOG_CONVERSATION_DIR
  71. extern volatile int aclk_conversation_log_counter;
  72. #if defined(HAVE_C___ATOMIC)
  73. #define ACLK_GET_CONV_LOG_NEXT() __atomic_fetch_add(&aclk_conversation_log_counter, 1, __ATOMIC_SEQ_CST)
  74. #else
  75. extern netdata_mutex_t aclk_conversation_log_mutex;
  76. int aclk_get_conv_log_next();
  77. #define ACLK_GET_CONV_LOG_NEXT() aclk_get_conv_log_next()
  78. #endif
  79. #endif
  80. unsigned long int aclk_tbeb_delay(int reset, int base, unsigned long int min, unsigned long int max);
  81. #define aclk_tbeb_reset(x) aclk_tbeb_delay(1, 0, 0, 0)
  82. void aclk_set_proxy(char **ohost, int *port, enum mqtt_wss_proxy_type *type);
  83. #endif /* ACLK_UTIL_H */