LCOV - code coverage report
Current view: top level - zephyr/net/prometheus - metric.h Coverage Total Hit
Test: new.info Lines: 100.0 % 12 12
Test Date: 2025-09-05 16:43:28

            Line data    Source code
       1            1 : /*
       2              :  * Copyright (c) 2024 Mustafa Abdullah Kus, Sparse Technology
       3              :  * Copyright (c) 2024 Nordic Semiconductor
       4              :  *
       5              :  * SPDX-License-Identifier: Apache-2.0
       6              :  */
       7              : 
       8              : #ifndef ZEPHYR_INCLUDE_PROMETHEUS_METRIC_H_
       9              : #define ZEPHYR_INCLUDE_PROMETHEUS_METRIC_H_
      10              : 
      11              : /**
      12              :  * @file
      13              :  *
      14              :  * @brief Prometheus metric interface.
      15              :  *
      16              :  * @addtogroup prometheus
      17              :  * @{
      18              :  */
      19              : 
      20              : #include <zephyr/sys/iterable_sections.h>
      21              : #include <zephyr/sys/slist.h>
      22              : #include <zephyr/net/prometheus/label.h>
      23              : 
      24              : /**
      25              :  * @brief Prometheus metric types.
      26              :  *
      27              :  * * References
      28              :  * * See https://prometheus.io/docs/concepts/metric_types
      29              :  */
      30            1 : enum prometheus_metric_type {
      31              :         /** Prometheus Counter */
      32              :         PROMETHEUS_COUNTER = 0,
      33              :         /** Prometheus Gauge */
      34              :         PROMETHEUS_GAUGE,
      35              :         /** Prometheus Summary */
      36              :         PROMETHEUS_SUMMARY,
      37              :         /** Prometheus Histogram */
      38              :         PROMETHEUS_HISTOGRAM,
      39              : };
      40              : 
      41              : /**
      42              :  * @brief Type used to represent a Prometheus metric base.
      43              :  *
      44              :  * Every metric has a prometheus_metric structure associated used
      45              :  * to control the metric access and usage.
      46              :  */
      47            1 : struct prometheus_metric {
      48              :         /** Slist metric list node */
      49            1 :         sys_snode_t node;
      50              :         /** Back pointer to the collector that this metric belongs to */
      51            1 :         struct prometheus_collector *collector;
      52              :         /** Back pointer to the actual metric (counter, gauge, etc.).
      53              :          * This is just a temporary solution, ultimate goal is to place
      54              :          * this generic metrict struct into the actual metric struct.
      55              :          */
      56            1 :         void *metric;
      57              :         /** Type of the Prometheus metric. */
      58            1 :         enum prometheus_metric_type type;
      59              :         /** Name of the Prometheus metric. */
      60            1 :         const char *name;
      61              :         /** Description of the Prometheus metric. */
      62            1 :         const char *description;
      63              :         /** Labels associated with the Prometheus metric. */
      64            1 :         struct prometheus_label labels[MAX_PROMETHEUS_LABELS_PER_METRIC];
      65              :         /** Number of labels associated with the Prometheus metric. */
      66            1 :         int num_labels;
      67              :         /** User defined data */
      68            1 :         void *user_data;
      69              :         /* Add any other necessary fields */
      70              : };
      71              : 
      72              : /**
      73              :  * @}
      74              :  */
      75              : 
      76              : #endif /* ZEPHYR_INCLUDE_PROMETHEUS_METRIC_H_ */
        

Generated by: LCOV version 2.0-1