diff options
Diffstat (limited to '')
-rw-r--r-- | src/database/rrdlabels.h (renamed from database/rrdlabels.h) | 28 |
1 files changed, 26 insertions, 2 deletions
diff --git a/database/rrdlabels.h b/src/database/rrdlabels.h index 64a0e2384..88b35cf92 100644 --- a/database/rrdlabels.h +++ b/src/database/rrdlabels.h @@ -5,6 +5,16 @@ #include "rrd.h" +struct pattern_array_item { + Word_t size; + Pvoid_t JudyL; +}; + +struct pattern_array { + Word_t key_count; + Pvoid_t JudyL; +}; + typedef enum __attribute__ ((__packed__)) rrdlabel_source { RRDLABEL_SRC_AUTO = (1 << 0), // set when Netdata found the label by some automation RRDLABEL_SRC_CONFIG = (1 << 1), // set when the user configured the label @@ -20,7 +30,7 @@ typedef enum __attribute__ ((__packed__)) rrdlabel_source { #define RRDLABEL_FLAG_INTERNAL (RRDLABEL_FLAG_OLD | RRDLABEL_FLAG_NEW | RRDLABEL_FLAG_DONT_DELETE) -size_t text_sanitize(unsigned char *dst, const unsigned char *src, size_t dst_size, unsigned char *char_map, bool utf, const char *empty, size_t *multibyte_length); +size_t text_sanitize(unsigned char *dst, const unsigned char *src, size_t dst_size, const unsigned char *char_map, bool utf, const char *empty, size_t *multibyte_length); RRDLABELS *rrdlabels_create(void); void rrdlabels_destroy(RRDLABELS *labels_dict); @@ -41,7 +51,7 @@ int rrdlabels_walkthrough_read(RRDLABELS *labels, int (*callback)(const char *na void rrdlabels_log_to_buffer(RRDLABELS *labels, BUFFER *wb); bool rrdlabels_match_simple_pattern(RRDLABELS *labels, const char *simple_pattern_txt); -bool rrdlabels_match_simple_pattern_parsed(RRDLABELS *labels, SIMPLE_PATTERN *pattern, char equal, size_t *searches); +SIMPLE_PATTERN_RESULT rrdlabels_match_simple_pattern_parsed(RRDLABELS *labels, SIMPLE_PATTERN *pattern, char equal, size_t *searches); int rrdlabels_to_buffer(RRDLABELS *labels, BUFFER *wb, const char *before_each, const char *equal, const char *quote, const char *between_them, bool (*filter_callback)(const char *name, const char *value, RRDLABEL_SRC ls, void *data), void *filter_data, void (*name_sanitizer)(char *dst, const char *src, size_t dst_size), @@ -50,6 +60,20 @@ void rrdlabels_to_buffer_json_members(RRDLABELS *labels, BUFFER *wb); void rrdlabels_migrate_to_these(RRDLABELS *dst, RRDLABELS *src); void rrdlabels_copy(RRDLABELS *dst, RRDLABELS *src); +size_t rrdlabels_common_count(RRDLABELS *labels1, RRDLABELS *labels2); + +struct pattern_array *pattern_array_allocate(); +struct pattern_array * +pattern_array_add_key_value(struct pattern_array *pa, const char *key, const char *value, char sep); +bool pattern_array_label_match( + struct pattern_array *pa, + RRDLABELS *labels, + char eq, + size_t *searches); +struct pattern_array *pattern_array_add_simple_pattern(struct pattern_array *pa, SIMPLE_PATTERN *pattern, char sep); +struct pattern_array * +pattern_array_add_key_simple_pattern(struct pattern_array *pa, const char *key, SIMPLE_PATTERN *pattern); +void pattern_array_free(struct pattern_array *pa); int rrdlabels_unittest(void); |