34#include "xtc_export.h"
41typedef struct xtc_counter xtc_counter_t;
42typedef struct xtc_gauge xtc_gauge_t;
43typedef struct xtc_hist xtc_hist_t;
45typedef enum xtc_metric_kind {
46 XTC_METRIC_COUNTER = 0,
51typedef int (*xtc_metric_visit_fn)(
const char *name,
52 xtc_metric_kind_t kind,
81XTC_API
int xtc_counter_create(
const char *name, xtc_counter_t **out);
82XTC_API
void xtc_counter_destroy(xtc_counter_t *c);
83XTC_API
void xtc_counter_inc(xtc_counter_t *c);
84XTC_API
void xtc_counter_add(xtc_counter_t *c, int64_t delta);
85XTC_API uint64_t xtc_counter_read(
const xtc_counter_t *c);
87XTC_API
int xtc_gauge_create(
const char *name, xtc_gauge_t **out);
88XTC_API
void xtc_gauge_destroy(xtc_gauge_t *g);
89XTC_API
void xtc_gauge_set(xtc_gauge_t *g, int64_t v);
90XTC_API
void xtc_gauge_add(xtc_gauge_t *g, int64_t delta);
91XTC_API int64_t xtc_gauge_read(
const xtc_gauge_t *g);
93XTC_API
int xtc_hist_create(
const char *name, xtc_hist_t **out);
94XTC_API
void xtc_hist_destroy(xtc_hist_t *h);
95XTC_API
void xtc_hist_record(xtc_hist_t *h, int64_t value_ns);
96XTC_API int64_t xtc_hist_quantile(
const xtc_hist_t *h,
double q);
97XTC_API uint64_t xtc_hist_count(
const xtc_hist_t *h);
99XTC_API
int xtc_metrics_iterate(xtc_metric_visit_fn fn,
void *user);
100XTC_API
int xtc_metrics_dump_prometheus(
int fd);
120XTC_API
void xtc_tuning_check(
void);