LCOV - code coverage report
Current view: top level - disco/metrics - fd_metrics_base.h (source / functions) Hit Total Coverage
Test: cov.lcov Lines: 0 14 0.0 %
Date: 2026-10-22 18:10:43 Functions: 0 118 0.0 %

          Line data    Source code
       1             : #ifndef HEADER_fd_src_disco_metrics_fd_metrics_base_h
       2             : #define HEADER_fd_src_disco_metrics_fd_metrics_base_h
       3             : 
       4             : #include "../../util/fd_util.h"
       5             : 
       6           0 : #define FD_METRICS_TYPE_GAUGE     (0UL)
       7           0 : #define FD_METRICS_TYPE_COUNTER   (1UL)
       8           0 : #define FD_METRICS_TYPE_HISTOGRAM (2UL)
       9             : 
      10           0 : #define FD_METRICS_CONVERTER_NONE        (0UL)
      11           0 : #define FD_METRICS_CONVERTER_NANOSECONDS (2UL) /* stored as ticks, exported as nanoseconds */
      12             : 
      13           0 : #define MIDX( type, group, measurement ) (FD_METRICS_##type##_##group##_##measurement##_OFF)
      14             : 
      15             : #define DECLARE_METRIC( MEASUREMENT, TYPE ) {              \
      16             :     .name      = FD_METRICS_##TYPE##_##MEASUREMENT##_NAME, \
      17             :     .type      = FD_METRICS_TYPE_##TYPE,                   \
      18             :     .desc      = FD_METRICS_##TYPE##_##MEASUREMENT##_DESC, \
      19             :     .offset    = FD_METRICS_##TYPE##_##MEASUREMENT##_OFF,  \
      20             :     .converter = FD_METRICS_##TYPE##_##MEASUREMENT##_CVT   \
      21             :   }
      22             : 
      23             : #define DECLARE_METRIC_ENUM( MEASUREMENT, TYPE, ENUM_NAME, ENUM_VARIANT ) { \
      24             :     .name         = FD_METRICS_##TYPE##_##MEASUREMENT##_NAME,               \
      25             :     .enum_name    = FD_METRICS_ENUM_##ENUM_NAME##_NAME,                     \
      26             :     .enum_variant = FD_METRICS_ENUM_##ENUM_NAME##_V_##ENUM_VARIANT##_NAME,  \
      27             :     .type         = FD_METRICS_TYPE_##TYPE,                                 \
      28             :     .desc         = FD_METRICS_##TYPE##_##MEASUREMENT##_DESC,               \
      29             :     .offset       = FD_METRICS_##TYPE##_##MEASUREMENT##_OFF +               \
      30             :                     FD_METRICS_ENUM_##ENUM_NAME##_V_##ENUM_VARIANT##_IDX,   \
      31             :     .converter    = FD_METRICS_##TYPE##_##MEASUREMENT##_CVT                 \
      32             :   }
      33             : 
      34             : #define DECLARE_METRIC_HISTOGRAM_NONE( MEASUREMENT ) {     \
      35             :     .name = FD_METRICS_HISTOGRAM_##MEASUREMENT##_NAME,     \
      36             :     .type = FD_METRICS_TYPE_HISTOGRAM,                     \
      37             :     .desc = FD_METRICS_HISTOGRAM_##MEASUREMENT##_DESC,     \
      38             :     .offset = FD_METRICS_HISTOGRAM_##MEASUREMENT##_OFF,    \
      39             :     .converter = FD_METRICS_HISTOGRAM_##MEASUREMENT##_CVT, \
      40             :     .histogram = {                                         \
      41             :       .none = {                                            \
      42             :         .min = FD_METRICS_HISTOGRAM_##MEASUREMENT##_MIN,   \
      43             :         .max = FD_METRICS_HISTOGRAM_##MEASUREMENT##_MAX,   \
      44             :       },                                                   \
      45             :     },                                                     \
      46             :   }
      47             : 
      48             : #define DECLARE_METRIC_HISTOGRAM_TICKS( MEASUREMENT ) {    \
      49             :     .name = FD_METRICS_HISTOGRAM_##MEASUREMENT##_NAME,     \
      50             :     .type = FD_METRICS_TYPE_HISTOGRAM,                     \
      51             :     .desc = FD_METRICS_HISTOGRAM_##MEASUREMENT##_DESC,     \
      52             :     .offset = FD_METRICS_HISTOGRAM_##MEASUREMENT##_OFF,    \
      53             :     .converter = FD_METRICS_HISTOGRAM_##MEASUREMENT##_CVT, \
      54             :     .histogram = {                                         \
      55             :       .ticks = {                                           \
      56             :         .edges_ns = (ulong const[])FD_METRICS_HISTOGRAM_##MEASUREMENT##_EDGES_NS, \
      57             :       },                                                   \
      58             :     },                                                     \
      59             :   }
      60             : 
      61             : typedef struct {
      62             :   char const * name;
      63             :   char const * enum_name;
      64             :   char const * enum_variant;
      65             :   int          type;
      66             :   char const * desc;
      67             :   ulong        offset;
      68             : 
      69             :   int converter;
      70             : 
      71             :   union {
      72             :     struct {
      73             : 
      74             :       union {
      75             :         struct {
      76             :           ulong min;
      77             :           ulong max;
      78             :         } none;
      79             : 
      80             :         struct {
      81             :           ulong const * edges_ns; /* FD_HISTF_BUCKET_CNT-1 right edges */
      82             :         } ticks;
      83             :       };
      84             :     } histogram;
      85             :   };
      86             : } fd_metrics_meta_t;
      87             : 
      88             : FD_PROTOTYPES_BEGIN
      89             : 
      90             : FD_FN_PURE static inline char *
      91           0 : fd_metrics_meta_type_str( fd_metrics_meta_t const * metric ) {
      92           0 :   switch( metric->type ) {
      93           0 :     case FD_METRICS_TYPE_GAUGE:     return "gauge";
      94           0 :     case FD_METRICS_TYPE_COUNTER:   return "counter";
      95           0 :     case FD_METRICS_TYPE_HISTOGRAM: return "histogram";
      96           0 :     default:                        return "unknown";
      97           0 :   }
      98           0 : }
      99             : 
     100             : FD_PROTOTYPES_END
     101             : 
     102             : #endif /* HEADER_fd_src_disco_metrics_fd_metrics_base_h */

Generated by: LCOV version 1.14