]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
stats: Move metric initialization to stats_metric_alloc()
authorAki Tuomi <aki.tuomi@open-xchange.com>
Sun, 1 Dec 2019 14:51:15 +0000 (16:51 +0200)
committeraki.tuomi <aki.tuomi@open-xchange.com>
Fri, 20 Dec 2019 08:11:27 +0000 (08:11 +0000)
src/stats/stats-metrics.c

index 8b35c9479b6d9f603d40a95a500747f20b1c772c..83b54c922ffb9f0bc65508734b6e1965e7105d0a 100644 (file)
@@ -98,6 +98,24 @@ static void stats_exporters_add_set(struct stats_metrics *metrics,
        array_push_back(&metrics->exporters, &exporter);
 }
 
+static struct metric *
+stats_metric_alloc(pool_t pool, const char *name, const char *const *fields)
+{
+       struct metric *metric = p_new(pool, struct metric, 1);
+       metric->name = p_strdup(pool, name);
+       metric->duration_stats = stats_dist_init();
+       metric->fields_count = str_array_length(fields);
+       if (metric->fields_count > 0) {
+           metric->fields = p_new(pool, struct metric_field,
+                                  metric->fields_count);
+               for (unsigned int i = 0; i < metric->fields_count; i++) {
+                       metric->fields[i].field_key = p_strdup(pool, fields[i]);
+                       metric->fields[i].stats = stats_dist_init();
+               }
+       }
+       return metric;
+}
+
 static void stats_metrics_add_set(struct stats_metrics *metrics,
                                  const struct stats_metric_settings *set)
 {
@@ -107,21 +125,8 @@ static void stats_metrics_add_set(struct stats_metrics *metrics,
        const char *const *fields;
        const char *const *tmp;
 
-       metric = p_new(metrics->pool, struct metric, 1);
-       metric->name = p_strdup(metrics->pool, set->name);
-       metric->duration_stats = stats_dist_init();
-
        fields = t_strsplit_spaces(set->fields, " ");
-       metric->fields_count = str_array_length(fields);
-       if (metric->fields_count > 0) {
-               metric->fields = p_new(metrics->pool, struct metric_field,
-                                      metric->fields_count);
-               for (unsigned int i = 0; i < metric->fields_count; i++) {
-                       metric->fields[i].field_key =
-                               p_strdup(metrics->pool, fields[i]);
-                       metric->fields[i].stats = stats_dist_init();
-               }
-       }
+       metric = stats_metric_alloc(metrics->pool, set->name, fields);
        array_push_back(&metrics->metrics, &metric);
 
        stats_metric_settings_to_query(set, &query);