From: Michael Tremer Date: Tue, 21 Oct 2025 10:41:53 +0000 (+0000) Subject: graphs: Add some more macros X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=6bbaee57e399fbcf0d3cb838fad7c6ba0f70d3d9;p=telemetry.git graphs: Add some more macros Signed-off-by: Michael Tremer --- diff --git a/src/daemon/graphs/graph.h b/src/daemon/graphs/graph.h index 3c2e673..cc2ab8f 100644 --- a/src/daemon/graphs/graph.h +++ b/src/daemon/graphs/graph.h @@ -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 @@ -94,8 +95,15 @@ 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 { \ @@ -103,6 +111,13 @@ 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" @@ -125,6 +140,27 @@ #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); \ @@ -148,11 +184,13 @@ #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) \ @@ -165,6 +203,9 @@ #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 ",+", \ @@ -204,5 +245,14 @@ 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 */