]> git.ipfire.org Git - collecty.git/commitdiff
graphs: Create macros to write less code
authorMichael Tremer <michael.tremer@ipfire.org>
Fri, 3 Oct 2025 14:40:22 +0000 (14:40 +0000)
committerMichael Tremer <michael.tremer@ipfire.org>
Fri, 3 Oct 2025 14:40:22 +0000 (14:40 +0000)
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
src/daemon/graphs/conntrack.c
src/daemon/graphs/graph.h
src/daemon/graphs/loadavg.c

index 3eaf1ba9e240c581e13e74f37b1fa8897ee557a3..429fd02098849ad86c0b0e03ab29ef5a6c9f6548 100644 (file)
@@ -47,77 +47,26 @@ static int conntrack_render(collecty_ctx* ctx,
        if (r < 0)
                return r;
 
-       // Draw the maximum line
-       r = collecty_args_push(args,
-                       DRAW_WITH_LABEL("LINE1", "max", LIMIT, DASHES SKIPSCALE), _("Limit"));
-       if (r < 0)
-               return r;
-
-       // Show the current limit
-       r = collecty_args_push(args, PRINT_LARGE_INTEGER("max_cur"));
-       if (r < 0)
-               return r;
-
-       // Add an empty column
-       r = collecty_args_push(args, PRINT_NOTHING);
-       if (r < 0)
-               return r;
-
-       // Add an empty column
-       r = collecty_args_push(args, PRINT_NOTHING);
-       if (r < 0)
-               return r;
-
-       // Add an empty column
-       r = collecty_args_push(args, PRINT_NOTHING EOL);
-       if (r < 0)
-               return r;
-
-       // Draw the main area
-       r = collecty_args_push(args, DRAW_WITH_LABEL("AREA", "count", GREEN), _("Entries"));
-       if (r < 0)
-               return r;
-
-       r = collecty_args_push(args, PRINT_LARGE_INTEGER("count_cur"));
-       if (r < 0)
-               return r;
-
-       r = collecty_args_push(args, PRINT_LARGE_INTEGER("count_avg"));
-       if (r < 0)
-               return r;
-
-       r = collecty_args_push(args, PRINT_LARGE_INTEGER("count_min"));
-       if (r < 0)
-               return r;
-
-       r = collecty_args_push(args, PRINT_LARGE_INTEGER("count_max") EOL);
-       if (r < 0)
-               return r;
-
-       // Add an empty line
-       r = collecty_args_push(args, EMPTY_COLUMN);
-       if (r < 0)
-               return r;
-
-       // Add the headline for the "Current" column
-       r = collecty_args_push(args, HEADER, _("Current"));
-       if (r < 0)
-               return r;
-
-       // Add the headline for the "Average" column
-       r = collecty_args_push(args, HEADER, _("Average"));
-       if (r < 0)
-               return r;
-
-       // Add the headline for the "Minimum" column
-       r = collecty_args_push(args, HEADER, _("Minimum"));
-       if (r < 0)
-               return r;
-
-       // Add the headline for the "Maximum" column
-       r = collecty_args_push(args, HEADER EOL, _("Maximum"));
-       if (r < 0)
-               return r;
+       // Limit
+       DRAW_WITH_LABEL(args, "LINE1", "max", LIMIT, _("Limit"), DASHES SKIPSCALE);
+       PRINT_LARGE_INTEGER(args, "max_cur");
+       PRINT_NOTHING(args);
+       PRINT_NOTHING(args);
+       PRINT_NOTHING(args, EOL);
+
+       // Entries
+       DRAW_WITH_LABEL(args, "AREA", "count", GREEN, _("Entries"));
+       PRINT_LARGE_INTEGER(args, "count_cur");
+       PRINT_LARGE_INTEGER(args, "count_avg");
+       PRINT_LARGE_INTEGER(args, "count_min");
+       PRINT_LARGE_INTEGER(args, "count_max", EOL);
+
+       // Header
+       PRINT_EMPTY_LABEL(args);
+       PRINT_HEADER(args, _("Current"));
+       PRINT_HEADER(args, _("Average"));
+       PRINT_HEADER(args, _("Minimum"));
+       PRINT_HEADER(args, _("Maximum"), EOL);
 
        return 0;
 }
index dabbfa5297fecda02b20c88fc774105bdadef1bc..04b033a2f37b63a52c2927fa3c4713f013988c2e 100644 (file)
 // Include utils
 #include "../util.h"
 
-#define HEADER                 "COMMENT:" COLUMN
-#define EMPTY_COLUMN   "COMMENT:                                "
+#define SCRIPT(args, def) \
+       do { \
+               int __r = collecty_args_push(args, def); \
+               if (__r < 0) \
+                       return __r; \
+       } while(0)
+
+#define SCRIPT_WITH_LABEL(args, def, label) \
+       do { \
+               int __r = collecty_args_push(args, def, label); \
+               if (__r < 0) \
+                       return __r; \
+       } while (0)
+
 #define EMPTY_LINE             "COMMENT: \\n"
 
 // Labels are 30 characters wide
 #define EOL                            "\\j"
 
 // Draw a LINE, AREA, etc.
-#define DRAW(what, field, color, ...) \
-       what ":" field color __VA_ARGS__
+#define DRAW(args, what, field, color, ...) \
+       SCRIPT(args, what ":" field color __VA_ARGS__)
 
-#define DRAW_WITH_LABEL(what, field, color, ...) \
-       DRAW(what, field, color) ":" LABEL __VA_ARGS__
+#define DRAW_WITH_LABEL(args, what, field, color, label, ...) \
+       SCRIPT_WITH_LABEL(args, what ":" field color ":" LABEL __VA_ARGS__, label)
 
 // Modifiers for lines
 #define DASHES                 ":dashes"
 #define SKIPSCALE              ":skipscale"
 
 // Add something to the legend of the graph
-#define PRINT(field, ...)                      "GPRINT:" field ":" __VA_ARGS__
-#define PRINT_NOTHING                          "COMMENT:                "
-#define PRINT_INTEGER(field)           PRINT(field, INTEGER)
-#define PRINT_LARGE_INTEGER(field)     PRINT(field, LARGE_INTEGER)
-#define PRINT_FLOAT(field)                     PRINT(field, FLOAT)
-#define PRINT_LARGE_FLOAT(field)       PRINT(field, LARGE_FLOAT)
+#define PRINT(args, field, ...)                                        SCRIPT(args, "GPRINT:" field ":" __VA_ARGS__)
+#define PRINT_HEADER(args, label, ...)                 SCRIPT_WITH_LABEL(args, "COMMENT:" COLUMN __VA_ARGS__, label)
+#define PRINT_EMPTY_LABEL(args, ...)                   SCRIPT(args, "COMMENT:                                " __VA_ARGS__)
+#define PRINT_NOTHING(args, ...)                               SCRIPT(args, "COMMENT:                " __VA_ARGS__)
+#define PRINT_INTEGER(args, field, ...)                        PRINT(args, field, INTEGER __VA_ARGS__)
+#define PRINT_LARGE_INTEGER(args, field, ...)  PRINT(args, field, LARGE_INTEGER __VA_ARGS__)
+#define PRINT_FLOAT(args, field, ...)                  PRINT(args, field, FLOAT __VA_ARGS__)
+#define PRINT_LARGE_FLOAT(args, field, ...)            PRINT(args, field, LARGE_FLOAT __VA_ARGS__)
 
 #endif /* COLLECTY_GRAPHS_GRAPH_H */
index 3520f9c868aeb4189dcc82580d33687edfedbd38..25080a31363722757e0cd4097c9016231720e65e 100644 (file)
@@ -43,110 +43,35 @@ static int loadavg_render(collecty_ctx* ctx,
                return r;
 
        // Add 15-minute load average
-       r = collecty_args_push(args,
-                       DRAW("AREA", "load15", COLOR_WITH_ALPHA(COLOR_LOAD15, OPACITY_25P)));
-       if (r < 0)
-               return r;
-
-       r = collecty_args_push(args,
-                       DRAW_WITH_LABEL("LINE1", "load15", COLOR_LOAD15), _("15 Minutes"));
-       if (r < 0)
-               return r;
-
-       r = collecty_args_push(args, PRINT_FLOAT("load15_cur"));
-       if (r < 0)
-               return r;
-
-       r = collecty_args_push(args, PRINT_FLOAT("load15_avg"));
-       if (r < 0)
-               return r;
-
-       r = collecty_args_push(args, PRINT_FLOAT("load15_min"));
-       if (r < 0)
-               return r;
-
-       r = collecty_args_push(args, PRINT_FLOAT("load15_max") EOL);
-       if (r < 0)
-               return r;
+       DRAW(args, "AREA", "load15", COLOR_WITH_ALPHA(COLOR_LOAD15, OPACITY_25P));
+       DRAW_WITH_LABEL(args, "LINE1", "load15", COLOR_LOAD15, _("15 Minutes"));
+       PRINT_FLOAT(args, "load15_cur");
+       PRINT_FLOAT(args, "load15_avg");
+       PRINT_FLOAT(args, "load15_min");
+       PRINT_FLOAT(args, "load15_max", EOL);
 
        // Add 5-minute load average
-       r = collecty_args_push(args,
-                       DRAW("AREA", "load5", COLOR_WITH_ALPHA(COLOR_LOAD5, OPACITY_25P)));
-       if (r < 0)
-               return r;
-
-       r = collecty_args_push(args,
-                       DRAW_WITH_LABEL("LINE1", "load5", COLOR_LOAD5), _("5 Minutes"));
-       if (r < 0)
-               return r;
-
-       r = collecty_args_push(args, PRINT_FLOAT("load5_cur"));
-       if (r < 0)
-               return r;
-
-       r = collecty_args_push(args, PRINT_FLOAT("load5_avg"));
-       if (r < 0)
-               return r;
-
-       r = collecty_args_push(args, PRINT_FLOAT("load5_min"));
-       if (r < 0)
-               return r;
-
-       r = collecty_args_push(args, PRINT_FLOAT("load5_max") EOL);
-       if (r < 0)
-               return r;
+       DRAW(args, "AREA", "load15", COLOR_WITH_ALPHA(COLOR_LOAD5, OPACITY_25P));
+       DRAW_WITH_LABEL(args, "LINE1", "load5", COLOR_LOAD5, _("5 Minutes"));
+       PRINT_FLOAT(args, "load5_cur");
+       PRINT_FLOAT(args, "load5_avg");
+       PRINT_FLOAT(args, "load5_min");
+       PRINT_FLOAT(args, "load5_max", EOL);
 
        // Add 1-minute load average
-       r = collecty_args_push(args,
-                       DRAW("AREA", "load1", COLOR_WITH_ALPHA(COLOR_LOAD1, OPACITY_25P)));
-       if (r < 0)
-               return r;
-
-       r = collecty_args_push(args,
-                       DRAW_WITH_LABEL("LINE1", "load1", COLOR_LOAD1), _("1 Minute"));
-       if (r < 0)
-               return r;
-
-       r = collecty_args_push(args, PRINT_FLOAT("load1_cur"));
-       if (r < 0)
-               return r;
-
-       r = collecty_args_push(args, PRINT_FLOAT("load1_avg"));
-       if (r < 0)
-               return r;
-
-       r = collecty_args_push(args, PRINT_FLOAT("load1_min"));
-       if (r < 0)
-               return r;
-
-       r = collecty_args_push(args, PRINT_FLOAT("load1_max") EOL);
-       if (r < 0)
-               return r;
-
-       // Add an empty line
-       r = collecty_args_push(args, EMPTY_COLUMN);
-       if (r < 0)
-               return r;
-
-       // Add the headline for the "Current" column
-       r = collecty_args_push(args, HEADER, _("Current"));
-       if (r < 0)
-               return r;
-
-       // Add the headline for the "Average" column
-       r = collecty_args_push(args, HEADER, _("Average"));
-       if (r < 0)
-               return r;
-
-       // Add the headline for the "Minimum" column
-       r = collecty_args_push(args, HEADER, _("Minimum"));
-       if (r < 0)
-               return r;
-
-       // Add the headline for the "Maximum" column
-       r = collecty_args_push(args, HEADER EOL, _("Maximum"));
-       if (r < 0)
-               return r;
+       DRAW(args, "AREA", "load1", COLOR_WITH_ALPHA(COLOR_LOAD1, OPACITY_25P));
+       DRAW_WITH_LABEL(args, "LINE1", "load1", COLOR_LOAD1, _("1 Minute"));
+       PRINT_FLOAT(args, "load1_cur");
+       PRINT_FLOAT(args, "load1_avg");
+       PRINT_FLOAT(args, "load1_min");
+       PRINT_FLOAT(args, "load1_max", EOL);
+
+       // Header
+       PRINT_EMPTY_LABEL(args);
+       PRINT_HEADER(args, _("Current"));
+       PRINT_HEADER(args, _("Average"));
+       PRINT_HEADER(args, _("Minimum"));
+       PRINT_HEADER(args, _("Maximum"), EOL);
 
        return 0;
 }