/* Copyright (c) 2021, The Tor Project, Inc. */ /* See LICENSE for licensing information */ /** * @file relay_metrics.h * @brief Header for feature/relay/relay_metrics.c **/ #ifndef TOR_FEATURE_RELAY_RELAY_METRICS_H #define TOR_FEATURE_RELAY_RELAY_METRICS_H #include "lib/container/smartlist.h" #include "lib/metrics/metrics_common.h" /** Metrics key for each reported metrics. This key is also used as an index in * the base_metrics array. */ typedef enum { /** Number of OOM invocation. */ RELAY_METRICS_NUM_OOM_BYTES = 0, /** Number of onionskines handled. */ RELAY_METRICS_NUM_ONIONSKINS = 1, } relay_metrics_key_t; /** The metadata of a relay metric. */ typedef struct relay_metrics_entry_t { /* Metric key used as a static array index. */ relay_metrics_key_t key; /* Metric type. */ metrics_type_t type; /* Metrics output name. */ const char *name; /* Metrics output help comment. */ const char *help; /* Update value function. */ void (*fill_fn)(void); } relay_metrics_entry_t; /* Init. */ void relay_metrics_init(void); void relay_metrics_free(void); /* Accessors. */ const smartlist_t *relay_metrics_get_stores(void); #endif /* !defined(TOR_FEATURE_RELAY_RELAY_METRICS_H) */