42#include "xtc_export.h"
49typedef struct xtc_counter xtc_counter_t;
50typedef struct xtc_gauge xtc_gauge_t;
51typedef struct xtc_hist xtc_hist_t;
52typedef struct xtc_dist xtc_dist_t;
54typedef enum xtc_metric_kind {
55 XTC_METRIC_COUNTER = 0,
61typedef int (*xtc_metric_visit_fn)(
const char *name,
62 xtc_metric_kind_t kind,
100XTC_API
int xtc_counter_create(
const char *name, xtc_counter_t **out);
101XTC_API
void xtc_counter_destroy(xtc_counter_t *c);
102XTC_API
void xtc_counter_inc(xtc_counter_t *c);
103XTC_API
void xtc_counter_add(xtc_counter_t *c, int64_t delta);
104XTC_API uint64_t xtc_counter_read(
const xtc_counter_t *c);
106XTC_API
int xtc_gauge_create(
const char *name, xtc_gauge_t **out);
107XTC_API
void xtc_gauge_destroy(xtc_gauge_t *g);
108XTC_API
void xtc_gauge_set(xtc_gauge_t *g, int64_t v);
109XTC_API
void xtc_gauge_add(xtc_gauge_t *g, int64_t delta);
110XTC_API int64_t xtc_gauge_read(
const xtc_gauge_t *g);
112XTC_API
int xtc_hist_create(
const char *name, xtc_hist_t **out);
113XTC_API
void xtc_hist_destroy(xtc_hist_t *h);
114XTC_API
void xtc_hist_record(xtc_hist_t *h, int64_t value_ns);
115XTC_API int64_t xtc_hist_quantile(
const xtc_hist_t *h,
double q);
116XTC_API uint64_t xtc_hist_count(
const xtc_hist_t *h);
117XTC_API int64_t xtc_hist_max(
const xtc_hist_t *h);
119XTC_API
int xtc_dist_create(
const char *name, xtc_dist_t **out);
120XTC_API
void xtc_dist_destroy(xtc_dist_t *d);
121XTC_API
void xtc_dist_record(xtc_dist_t *d,
double value);
122XTC_API uint64_t xtc_dist_count(
const xtc_dist_t *d);
123XTC_API
double xtc_dist_mean(
const xtc_dist_t *d);
124XTC_API
double xtc_dist_variance(
const xtc_dist_t *d);
125XTC_API
double xtc_dist_stddev(
const xtc_dist_t *d);
127XTC_API
int xtc_metrics_iterate(xtc_metric_visit_fn fn,
void *user);
128XTC_API
int xtc_metrics_dump_prometheus(
int fd);
148XTC_API
void xtc_tuning_check(
void);