summaryrefslogtreecommitdiffstats
path: root/src/libnetdata/facets/facets.h
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--src/libnetdata/facets/facets.h35
1 files changed, 31 insertions, 4 deletions
diff --git a/src/libnetdata/facets/facets.h b/src/libnetdata/facets/facets.h
index 8364d861..1d2b89c2 100644
--- a/src/libnetdata/facets/facets.h
+++ b/src/libnetdata/facets/facets.h
@@ -23,6 +23,7 @@ typedef enum __attribute__((packed)) {
} FACETS_TRANSFORMATION_SCOPE;
typedef enum __attribute__((packed)) {
+ FACET_KEY_OPTION_NONE = 0,
FACET_KEY_OPTION_FACET = (1 << 0), // filterable values
FACET_KEY_OPTION_NO_FACET = (1 << 1), // non-filterable value
FACET_KEY_OPTION_NEVER_FACET = (1 << 2), // never enable this field as facet
@@ -32,8 +33,11 @@ typedef enum __attribute__((packed)) {
FACET_KEY_OPTION_MAIN_TEXT = (1 << 6), // full width and wrap
FACET_KEY_OPTION_RICH_TEXT = (1 << 7),
FACET_KEY_OPTION_REORDER = (1 << 8), // give the key a new order id on first encounter
- FACET_KEY_OPTION_TRANSFORM_VIEW = (1 << 9), // when registering the transformation, do it only at the view, not on all data
- FACET_KEY_OPTION_EXPANDED_FILTER = (1 << 10), // the presentation should have this filter expanded by default
+ FACET_KEY_OPTION_REORDER_DONE = (1 << 9), // done re-ordering for this field
+ FACET_KEY_OPTION_TRANSFORM_VIEW = (1 << 10), // when registering the transformation, do it only at the view, not on all data
+ FACET_KEY_OPTION_EXPANDED_FILTER = (1 << 11), // the presentation should have this filter expanded by default
+ FACET_KEY_OPTION_PRETTY_XML = (1 << 12), // instruct the UI to parse this as an XML document
+ FACET_KEY_OPTION_HIDDEN = (1 << 13), // do not include this field in the response
} FACET_KEY_OPTIONS;
typedef enum __attribute__((packed)) {
@@ -51,10 +55,18 @@ typedef struct facet_row_key_value {
BUFFER *wb;
} FACET_ROW_KEY_VALUE;
+typedef struct facet_row_bin_data {
+ void (*cleanup_cb)(void *data);
+ void *data;
+} FACET_ROW_BIN_DATA;
+
+#define FACET_ROW_BIN_DATA_EMPTY (FACET_ROW_BIN_DATA){.data = NULL, .cleanup_cb = NULL}
+
typedef struct facet_row {
usec_t usec;
DICTIONARY *dict;
FACET_ROW_SEVERITY severity;
+ FACET_ROW_BIN_DATA bin_data;
struct facet_row *prev, *next;
} FACET_ROW;
@@ -77,6 +89,7 @@ typedef enum __attribute__((packed)) {
FACETS_OPTION_DONT_SEND_EMPTY_VALUE_FACETS = (1 << 5), // empty facet values will not be included in the report
FACETS_OPTION_SORT_FACETS_ALPHABETICALLY = (1 << 6),
FACETS_OPTION_SHOW_DELTAS = (1 << 7),
+ FACETS_OPTION_HASH_IDS = (1 << 8), // when set, the id of the facets, keys and values will be their hash
} FACETS_OPTIONS;
FACETS *facets_create(uint32_t items_to_return, FACETS_OPTIONS options, const char *visible_keys, const char *facet_keys, const char *non_facet_keys);
@@ -98,8 +111,14 @@ void facets_set_anchor(FACETS *facets, usec_t start_ut, usec_t stop_ut, FACETS_A
void facets_enable_slice_mode(FACETS *facets);
bool facets_row_candidate_to_keep(FACETS *facets, usec_t usec);
+void facets_reset_and_disable_all_facets(FACETS *facets);
+
+FACET_KEY *facets_register_facet(FACETS *facets, const char *name, FACET_KEY_OPTIONS options);
FACET_KEY *facets_register_facet_id(FACETS *facets, const char *key_id, FACET_KEY_OPTIONS options);
-void facets_register_facet_id_filter(FACETS *facets, const char *key_id, char *value_id, FACET_KEY_OPTIONS options);
+
+void facets_register_facet_filter(FACETS *facets, const char *key, const char *value, FACET_KEY_OPTIONS options);
+void facets_register_facet_filter_id(FACETS *facets, const char *key_id, const char *value_id, FACET_KEY_OPTIONS options);
+
void facets_set_timeframe_and_histogram_by_id(FACETS *facets, const char *key_id, usec_t after_ut, usec_t before_ut);
void facets_set_timeframe_and_histogram_by_name(FACETS *facets, const char *key_name, usec_t after_ut, usec_t before_ut);
@@ -121,8 +140,16 @@ usec_t facets_row_oldest_ut(FACETS *facets);
usec_t facets_row_newest_ut(FACETS *facets);
uint32_t facets_rows(FACETS *facets);
-void facets_table_config(BUFFER *wb);
+void facets_table_config(FACETS *facets, BUFFER *wb);
const char *facets_severity_to_string(FACET_ROW_SEVERITY severity);
+typedef bool (*facets_foreach_selected_value_in_key_t)(FACETS *facets, size_t id, const char *key, const char *value, void *data);
+bool facets_foreach_selected_value_in_key(FACETS *facets, const char *key, size_t key_length, DICTIONARY *used_hashes_registry, facets_foreach_selected_value_in_key_t cb, void *data);
+
+void facets_row_bin_data_set(FACETS *facets, void (*cleanup_cb)(void *data), void *data);
+void *facets_row_bin_data_get(FACETS *facets __maybe_unused, FACET_ROW *row);
+
+void facets_use_hashes_for_ids(FACETS *facets, bool set);
+
#endif