LCOV - code coverage report
Current view: top level - zephyr/net/prometheus - gauge.h Coverage Total Hit
Test: new.info Lines: 100.0 % 7 7
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_GAUGE_H_
       9              : #define ZEPHYR_INCLUDE_PROMETHEUS_GAUGE_H_
      10              : 
      11              : /**
      12              :  * @file
      13              :  *
      14              :  * @brief Prometheus gauge APIs.
      15              :  *
      16              :  * @addtogroup prometheus
      17              :  * @{
      18              :  */
      19              : 
      20              : #include <zephyr/sys/iterable_sections.h>
      21              : #include <zephyr/net/prometheus/metric.h>
      22              : 
      23              : /**
      24              :  * @brief Type used to represent a Prometheus gauge metric.
      25              :  *
      26              :  * * References
      27              :  * * See https://prometheus.io/docs/concepts/metric_types/#gauge
      28              :  */
      29            1 : struct prometheus_gauge {
      30              :         /** Base of the Prometheus gauge metric */
      31            1 :         struct prometheus_metric base;
      32              :         /** Value of the Prometheus gauge metric */
      33            1 :         double value;
      34              :         /** User data */
      35            1 :         void *user_data;
      36              : };
      37              : 
      38              : /**
      39              :  * @brief Prometheus Gauge definition.
      40              :  *
      41              :  * This macro defines a Gauge metric. If you want to make the gauge static,
      42              :  * then add "static" keyword before the PROMETHEUS_GAUGE_DEFINE.
      43              :  *
      44              :  * @param _name The gauge metric name.
      45              :  * @param _desc Gauge description
      46              :  * @param _label Label for the metric. Additional labels can be added at runtime.
      47              :  * @param _collector Collector to map this metric. Can be set to NULL if it not yet known.
      48              :  * @param ... Optional user data specific to this metric instance.
      49              :  *
      50              :  * Example usage:
      51              :  * @code{.c}
      52              :  *
      53              :  * PROMETHEUS_GAUGE_DEFINE(http_request_gauge, "HTTP request gauge",
      54              :  *                         ({ .key = "http_request", .value = "request_count" }),
      55              :  *                         NULL);
      56              :  *
      57              :  * @endcode
      58              :  */
      59            1 : #define PROMETHEUS_GAUGE_DEFINE(_name, _desc, _label, _collector, ...)  \
      60              :         STRUCT_SECTION_ITERABLE(prometheus_gauge, _name) = {            \
      61              :                 .base.name = STRINGIFY(_name),                          \
      62              :                 .base.type = PROMETHEUS_GAUGE,                          \
      63              :                 .base.description = _desc,                              \
      64              :                 .base.labels[0] = __DEBRACKET _label,                   \
      65              :                 .base.num_labels = 1,                                   \
      66              :                 .base.collector = _collector,                           \
      67              :                 .value = 0.0,                                           \
      68              :                 .user_data = COND_CODE_0(                               \
      69              :                         NUM_VA_ARGS_LESS_1(LIST_DROP_EMPTY(__VA_ARGS__, _)), \
      70              :                         (NULL),                                         \
      71              :                         (GET_ARG_N(1, __VA_ARGS__))),                   \
      72              :         }
      73              : 
      74              : /**
      75              :  * @brief Set the value of a Prometheus gauge metric
      76              :  *
      77              :  * Sets the value of the specified gauge metric to the given value.
      78              :  *
      79              :  * @param gauge Pointer to the gauge metric to set.
      80              :  * @param value Value to set the gauge metric to.
      81              :  *
      82              :  * @return 0 on success, -EINVAL if the value is negative.
      83              :  */
      84            1 : int prometheus_gauge_set(struct prometheus_gauge *gauge, double value);
      85              : 
      86              : /**
      87              :  * @}
      88              :  */
      89              : 
      90              : #endif /* ZEPHYR_INCLUDE_PROMETHEUS_GAUGE_H_ */
        

Generated by: LCOV version 2.0-1