]> git.ipfire.org Git - telemetry.git/commitdiff
graphs: Add some more macros
authorMichael Tremer <michael.tremer@ipfire.org>
Tue, 21 Oct 2025 10:41:53 +0000 (10:41 +0000)
committerMichael Tremer <michael.tremer@ipfire.org>
Tue, 21 Oct 2025 10:41:53 +0000 (10:41 +0000)
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
src/daemon/graphs/graph.h

index 3c2e673d77d80084c0556484bcd0ac333f040868..cc2ab8fa9097f59e7279564befd691207a66fe05 100644 (file)
@@ -53,6 +53,7 @@
 #define INTEGER                        "%%16.0lf"
 #define LARGE_INTEGER  "%%14.0lf %%s"
 #define FLOAT                  "%%14.2lf"
+#define FLOAT_WITH_UNIT "%%10.2lf %3s"
 #define LARGE_FLOAT            "%%14.2lf %%s"
 
 // Macro to terminate a line
        DRAW(args, "AREA", field, object, COLOR_WITH_ALPHA(color, OPACITY_AREA), __VA_ARGS__)
 
 // Macros to draw the area's outline
+#define DRAW_AREA_OUTLINE                              DRAW_LINE1
 #define DRAW_AREA_OUTLINE_WITH_LABEL   DRAW_LINE1_WITH_LABEL
 
+#define DRAW_AREA(args, field, object, color) \
+       do { \
+               DRAW_AREA_BACKGROUND(args, field, object, color); \
+               DRAW_AREA_OUTLINE(args, field, object, color); \
+       } while(0)
+
 // Areas are being drawn with an outline
 #define DRAW_AREA_WITH_LABEL(args, field, object, color, label, ...) \
        do { \
                DRAW_AREA_OUTLINE_WITH_LABEL(args, field, object, color, label, __VA_ARGS__); \
        } while(0)
 
+// Horizontal lines
+#define DRAW_HRULE(args, value, color) \
+       SCRIPT(args, "HRULE:%lf" color, (double)value)
+
+#define DRAW_HRULE_WITH_LABEL(args, value, color, label) \
+       SCRIPT(args, "HRULE:%lf" color ":" COLUMN, (double)value, label)
+
 // Modifiers
 #define STACK                  ":STACK"
 
 #define PRINT_LARGE_FLOAT(args, field, object)                 PRINT(args, field, object, LARGE_FLOAT)
 #define PRINT_EOL(args)                                                                        SCRIPT(args, "COMMENT:" EOL)
 
+/*
+       Prints CURRENT, AVERAGE, MINIMUM and MAXIMUM
+*/
+#define PRINT_CAMM(args, field, object, format, ...) \
+       do { \
+               PRINT_CURRENT(args, field, object, format, ##__VA_ARGS__); \
+               PRINT_AVERAGE(args, field, object, format, ##__VA_ARGS__); \
+               PRINT_MINIMUM(args, field, object, format, ##__VA_ARGS__); \
+               PRINT_MAXIMUM(args, field, object, format, ##__VA_ARGS__); \
+               PRINT_EOL(args); \
+       } while (0)
+
+#define PRINT_CURRENT(args, field, object, format, ...) \
+       SCRIPT(args, "GPRINT:" FIELD_CURRENT(FIELD) ":" format, FIELD_AND_OBJECT(field, object), ##__VA_ARGS__)
+#define PRINT_AVERAGE(args, field, object, format, ...) \
+       SCRIPT(args, "GPRINT:" FIELD_AVERAGE(FIELD) ":" format, FIELD_AND_OBJECT(field, object), ##__VA_ARGS__)
+#define PRINT_MINIMUM(args, field, object, format, ...) \
+       SCRIPT(args, "GPRINT:" FIELD_MINIMUM(FIELD) ":" format, FIELD_AND_OBJECT(field, object), ##__VA_ARGS__)
+#define PRINT_MAXIMUM(args, field, object, format, ...) \
+       SCRIPT(args, "GPRINT:" FIELD_MAXIMUM(FIELD) ":" format, FIELD_AND_OBJECT(field, object), ##__VA_ARGS__)
+
 #define PRINT_HEADER1(args, header1) \
        do { \
                PRINT_EMPTY_LABEL(args); \
 #define FIELD_MINIMUM(field)                           field "_min"
 #define FIELD_MAXIMUM(field)                           field "_max"
 #define FIELD_PERCENT(field)                           field "_p"
+#define FIELD_INF(field)                                       field "_inf"
+#define FIELD_NEGINF(field)                                    field "_neginf"
 
-#define VALUE_CURRENT(args, field, object)     SCRIPT(args, "VDEF:" FIELD "=" FIELD ",LAST", FIELD_AND_OBJECT(FIELD_CURRENT(field), object), FIELD_AND_OBJECT(field, object))
-#define VALUE_AVERAGE(args, field, object)     SCRIPT(args, "VDEF:" FIELD "=" FIELD ",AVERAGE", FIELD_AND_OBJECT(FIELD_AVERAGE(field), object), FIELD_AND_OBJECT(field, object))
-#define VALUE_MINIMUM(args, field, object)     SCRIPT(args, "VDEF:" FIELD "=" FIELD ",MINIMUM", FIELD_AND_OBJECT(FIELD_MINIMUM(field), object), FIELD_AND_OBJECT(field, object))
-#define VALUE_MAXIMUM(args, field, object)     SCRIPT(args, "VDEF:" FIELD "=" FIELD ",MAXIMUM", FIELD_AND_OBJECT(FIELD_MAXIMUM(field), object), FIELD_AND_OBJECT(field, object))
+#define VALUE_CURRENT(args, field, object)     SCRIPT(args, "VDEF:" FIELD_CURRENT(FIELD) "=" FIELD ",LAST", FIELD_AND_OBJECT(field, object), FIELD_AND_OBJECT(field, object))
+#define VALUE_AVERAGE(args, field, object)     SCRIPT(args, "VDEF:" FIELD_AVERAGE(FIELD) "=" FIELD ",AVERAGE", FIELD_AND_OBJECT(field, object), FIELD_AND_OBJECT(field, object))
+#define VALUE_MINIMUM(args, field, object)     SCRIPT(args, "VDEF:" FIELD_MINIMUM(FIELD) "=" FIELD ",MINIMUM", FIELD_AND_OBJECT(field, object), FIELD_AND_OBJECT(field, object))
+#define VALUE_MAXIMUM(args, field, object)     SCRIPT(args, "VDEF:" FIELD_MAXIMUM(FIELD) "=" FIELD ",MAXIMUM", FIELD_AND_OBJECT(field, object), FIELD_AND_OBJECT(field, object))
 
 // Computes all values
 #define VALUE_ALL(args, field, object) \
 
 #define COMPUTE_CDEF(args, cdef, ...)                  SCRIPT(args, "CDEF:" cdef, ##__VA_ARGS__)
 
+#define COMPUTE_EXPRESSION(args, field, object, expression, ...) \
+       COMPUTE_CDEF(args, FIELD "=" expression, FIELD_AND_OBJECT(field, object), ##__VA_ARGS__)
+
 #define COMPUTE_SUM(args, sum, object1, summand1, object2, summand2, object3) \
        do { \
                COMPUTE_CDEF(args, FIELD "=" FIELD "," FIELD ",+", \
                VALUE_ALL(args, FIELD_PERCENT(field), object1); \
        } while (0)
 
+#define COMPUTE_LIMIT(args, limit, field, object, lower_limit, upper_limit) \
+       do { \
+               COMPUTE_CDEF(args, FIELD "=" FIELD ",%ld,%ld,LIMIT", \
+                       FIELD_AND_OBJECT(limit, object), \
+                       FIELD_AND_OBJECT(field, object), \
+                       lower_limit, \
+                       upper_limit \
+               ); \
+       } while (0)
 
 #endif /* TELEMETRY_GRAPHS_GRAPH_H */