return set->value;
}
-int metric_list_add(metric_list_t *metrics, metric_t m) {
+static int metric_list_add(metric_list_t *metrics, metric_t m) {
if (metrics == NULL) {
return EINVAL;
}
return 0;
}
+static void metric_list_reset(metric_list_t *metrics) {
+ if (metrics == NULL) {
+ return;
+ }
+
+ for (size_t i = 0; i < metrics->num; i++) {
+ metric_reset(metrics->ptr + i);
+ }
+ free(metrics->ptr);
+
+ metrics->ptr = NULL;
+ metrics->num = 0;
+}
+
static int metric_list_clone(metric_list_t *dest, metric_list_t src,
metric_family_t *fam) {
if (src.num == 0) {
return 0;
}
-void metric_list_reset(metric_list_t *metrics) {
- if (metrics == NULL) {
- return;
- }
-
- for (size_t i = 0; i < metrics->num; i++) {
- label_set_reset(&metrics->ptr[i].label);
- meta_data_destroy(metrics->ptr[i].meta);
+int metric_family_metric_append(metric_family_t *fam, metric_t m) {
+ if (fam == NULL) {
+ return EINVAL;
}
- free(metrics->ptr);
- metrics->ptr = NULL;
- metrics->num = 0;
+ m.family = fam;
+ return metric_list_add(&fam->metric, m);
}
-int metric_family_metrics_append(metric_family_t *fam, value_t v,
- label_t const *label, size_t label_num) {
- if ((fam == NULL) || ((label_num != 0) && (label == NULL))) {
+int metric_family_metric_reset(metric_family_t *fam) {
+ if (fam == NULL) {
return EINVAL;
}
- metric_t m = {
- .family = fam,
- .value = v,
- };
-
- for (size_t i = 0; i < label_num; i++) {
- int status = label_set_create(&m.label, label[i].name, label[i].value);
- if (status != 0) {
- label_set_reset(&m.label);
- return status;
- }
- }
-
- int status = metric_list_add(&fam->metric, m);
- if (status != 0) {
- label_set_reset(&m.label);
- return status;
- }
-
+ metric_list_reset(&fam->metric);
return 0;
}
size_t num;
} metric_list_t;
-/* metric_list_add appends a metric to the metric list. The metric's labels and
- * meta data are copied. */
-int metric_list_add(metric_list_t *metrics, metric_t m);
-
-/* metric_list_reset frees all the metrics in the metric list. It does *not*
- * free the passed "metric_list_t*" itself. */
-void metric_list_reset(metric_list_t *metrics);
-
/*
* Metric Family
*/
metric_list_t metric;
};
-/* metric_family_metrics_append appends a new metric to the metric family. This
- * allocates memory which must be freed using metric_family_metrics_reset. */
-int metric_family_metrics_append(metric_family_t *fam, value_t v,
- label_t const *label, size_t label_num);
+/* metric_family_metric_append appends a new metric to the metric family. This
+ * allocates memory which must be freed using metric_family_metric_reset. */
+int metric_family_metric_append(metric_family_t *fam, metric_t m);
+
+/* metric_family_metric_reset frees all metrics in the metric family and
+ * resets the count to zero. */
+int metric_family_metric_reset(metric_family_t *fam);
/* metric_family_free frees a "metric_family_t" that was allocated with
* metric_family_clone(). */