1 /*
2  * Copyright (c) 2024 Mustafa Abdullah Kus, Sparse Technology
3  *
4  * SPDX-License-Identifier: Apache-2.0
5  */
6 
7 #ifndef ZEPHYR_INCLUDE_PROMETHEUS_FORMATTER_H_
8 #define ZEPHYR_INCLUDE_PROMETHEUS_FORMATTER_H_
9 
10 /**
11  * @file
12  *
13  * @brief Prometheus formatter APIs.
14  *
15  * @addtogroup prometheus
16  * @{
17  */
18 
19 #include <zephyr/net/prometheus/collector.h>
20 
21 /**
22  * @brief Format exposition data for Prometheus
23  *
24  * Formats the exposition data collected by the specified collector into the provided buffer.
25  * Function will format metric data according to Prometheus text-based format
26  *
27  * @param collector Pointer to the collector containing the data to format.
28  * @param buffer Pointer to the buffer where the formatted exposition data will be stored.
29  * @param buffer_size Size of the buffer.
30  *
31  * @return 0 on success, negative errno on error.
32  */
33 int prometheus_format_exposition(struct prometheus_collector *collector, char *buffer,
34 				 size_t buffer_size);
35 
36 /**
37  * @brief Format exposition data for one metric for Prometheus
38  *
39  * Formats the exposition data of one specific metric into the provided buffer.
40  * Function will format metric data according to Prometheus text-based format.
41  *
42  * @param metric Pointer to the metric containing the data to format.
43  * @param buffer Pointer to the buffer where the formatted exposition data will be stored.
44  * @param buffer_size Size of the buffer.
45  * @param written How many bytes have been written to the buffer.
46  *
47  * @return 0 on success, negative errno on error.
48  */
49 int prometheus_format_one_metric(struct prometheus_metric *metric, char *buffer,
50 				 size_t buffer_size, int *written);
51 
52 /**
53  * @}
54  */
55 
56 #endif /* ZEPHYR_INCLUDE_PROMETHEUS_FORMATTER_H_ */
57