From: Stephan Bosch Date: Thu, 14 Nov 2019 23:28:18 +0000 (+0100) Subject: stats: stats-metrics - Associate each metric with its corresponding metric settings. X-Git-Tag: 2.3.11.2~315 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=8cb1413c1dda200e8609c158f2a85b5de47bd955;p=thirdparty%2Fdovecot%2Fcore.git stats: stats-metrics - Associate each metric with its corresponding metric settings. --- diff --git a/src/stats/stats-metrics.c b/src/stats/stats-metrics.c index 93968d0e6d..a66203f980 100644 --- a/src/stats/stats-metrics.c +++ b/src/stats/stats-metrics.c @@ -124,10 +124,13 @@ static void stats_exporters_add_set(struct stats_metrics *metrics, } static struct metric * -stats_metric_alloc(pool_t pool, const char *name, const char *const *fields) +stats_metric_alloc(pool_t pool, const char *name, + const struct stats_metric_settings *set, + const char *const *fields) { struct metric *metric = p_new(pool, struct metric, 1); metric->name = p_strdup(pool, name); + metric->set = set; metric->duration_stats = stats_dist_init(); metric->fields_count = str_array_length(fields); if (metric->fields_count > 0) { @@ -151,7 +154,7 @@ static void stats_metrics_add_set(struct stats_metrics *metrics, const char *const *tmp; fields = t_strsplit_spaces(set->fields, " "); - metric = stats_metric_alloc(metrics->pool, set->name, fields); + metric = stats_metric_alloc(metrics->pool, set->name, set, fields); if (array_is_created(&set->parsed_group_by)) metric->group_by = array_get(&set->parsed_group_by, @@ -347,7 +350,7 @@ stats_metric_sub_metric_alloc(struct metric *metric, const char *name, pool_t po for (unsigned int i = 0; i < metric->fields_count; i++) array_append(&fields, &metric->fields[i].field_key, 1); array_append_zero(&fields); - sub_metric = stats_metric_alloc(pool, metric->name, + sub_metric = stats_metric_alloc(pool, metric->name, metric->set, array_idx(&fields, 0)); sub_metric->sub_name = sub_metric_name_create(pool, name); array_append(&metric->sub_metrics, &sub_metric, 1); diff --git a/src/stats/stats-metrics.h b/src/stats/stats-metrics.h index fe9048a0ce..1328da1133 100644 --- a/src/stats/stats-metrics.h +++ b/src/stats/stats-metrics.h @@ -65,6 +65,7 @@ struct metric_value { }; struct metric { + const struct stats_metric_settings *set; const char *name; /* When this metric is a sub-metric, then this is the suffix for name and any sub_names before it.