From: Michael Tremer Date: Sun, 15 Sep 2024 04:50:29 +0000 (+0000) Subject: daemon: Fix format of the stats message X-Git-Tag: 0.9.30~1184 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=c9ff0672e5ed859caa7c58bbe8d0ff6caf228537;p=pakfire.git daemon: Fix format of the stats message Signed-off-by: Michael Tremer --- diff --git a/src/libpakfire/daemon.c b/src/libpakfire/daemon.c index 964b29fcc..d1367e0fd 100644 --- a/src/libpakfire/daemon.c +++ b/src/libpakfire/daemon.c @@ -67,13 +67,14 @@ static int pakfire_daemon_terminate(sd_event_source* source, return sd_event_exit(sd_event_source_get_event(source), 0); } -static int pakfire_daemon_submit_stats(sd_event_source* s, uint64_t usec, void* data) { - struct pakfire_daemon* daemon = data; +static int pakfire_daemon_submit_stats(sd_event_source* s, uint64_t usec, void* p) { + struct pakfire_daemon* daemon = p; struct pakfire_cpuinfo cpuinfo = {}; struct pakfire_cpustat cpustat = {}; struct pakfire_loadavg loadavg = {}; struct pakfire_meminfo meminfo = {}; struct json_object* stats = NULL; + struct json_object* data = NULL; const char* arch = NULL; size_t length = 0; int r; @@ -136,161 +137,181 @@ static int pakfire_daemon_submit_stats(sd_event_source* s, uint64_t usec, void* goto ERROR; } - // Create new stats object - stats = json_object_new_object(); - if (!stats) + // Create new data object + data = json_object_new_object(); + if (!data) goto ERROR; // CPU Model - r = pakfire_json_add_string(stats, "cpu_model", cpuinfo.model); + r = pakfire_json_add_string(data, "cpu_model", cpuinfo.model); if (r) goto ERROR; // CPU Count - r = pakfire_json_add_uint64(stats, "cpu_count", cpuinfo.count); + r = pakfire_json_add_uint64(data, "cpu_count", cpuinfo.count); if (r) goto ERROR; // CPU Arch - r = pakfire_json_add_string(stats, "cpu_arch", arch); + r = pakfire_json_add_string(data, "cpu_arch", arch); if (r) goto ERROR; // Pakfire Version - r = pakfire_json_add_string(stats, "pakfire_version", PACKAGE_VERSION); + r = pakfire_json_add_string(data, "pakfire_version", PACKAGE_VERSION); if (r) goto ERROR; // OS - r = pakfire_json_add_string(stats, "os_name", distro->pretty_name); + r = pakfire_json_add_string(data, "os_name", distro->pretty_name); if (r) goto ERROR; // CPU Stats: User - r = pakfire_json_add_double(stats, "cpu_user", cpustat.user); + r = pakfire_json_add_double(data, "cpu_user", cpustat.user); if (r) goto ERROR; // CPU Stats: Nice - r = pakfire_json_add_double(stats, "cpu_nice", cpustat.nice); + r = pakfire_json_add_double(data, "cpu_nice", cpustat.nice); if (r) goto ERROR; // CPU Stats: System - r = pakfire_json_add_double(stats, "cpu_system", cpustat.system); + r = pakfire_json_add_double(data, "cpu_system", cpustat.system); if (r) goto ERROR; // CPU Stats: Idle - r = pakfire_json_add_double(stats, "cpu_idle", cpustat.idle); + r = pakfire_json_add_double(data, "cpu_idle", cpustat.idle); if (r) goto ERROR; // CPU Stats: IO Wait - r = pakfire_json_add_double(stats, "cpu_iowait", cpustat.iowait); + r = pakfire_json_add_double(data, "cpu_iowait", cpustat.iowait); if (r) goto ERROR; // CPU Stats: IRQ - r = pakfire_json_add_double(stats, "cpu_irq", cpustat.irq); + r = pakfire_json_add_double(data, "cpu_irq", cpustat.irq); if (r) goto ERROR; // CPU Stats: Soft IRQ - r = pakfire_json_add_double(stats, "cpu_softirq", cpustat.softirq); + r = pakfire_json_add_double(data, "cpu_softirq", cpustat.softirq); if (r) goto ERROR; // CPU Stats: Steal - r = pakfire_json_add_double(stats, "cpu_steal", cpustat.steal); + r = pakfire_json_add_double(data, "cpu_steal", cpustat.steal); if (r) goto ERROR; // CPU Stats: Guest - r = pakfire_json_add_double(stats, "cpu_guest", cpustat.guest); + r = pakfire_json_add_double(data, "cpu_guest", cpustat.guest); if (r) goto ERROR; // CPU Stats: Guest Nice - r = pakfire_json_add_double(stats, "cpu_guest_nice", cpustat.guest_nice); + r = pakfire_json_add_double(data, "cpu_guest_nice", cpustat.guest_nice); if (r) goto ERROR; // Load Average: 1 - r = pakfire_json_add_double(stats, "loadavg1", loadavg.load1); + r = pakfire_json_add_double(data, "loadavg1", loadavg.load1); if (r) goto ERROR; // Load Average: 5 - r = pakfire_json_add_double(stats, "loadavg5", loadavg.load5); + r = pakfire_json_add_double(data, "loadavg5", loadavg.load5); if (r) goto ERROR; // Load Average: 15 - r = pakfire_json_add_double(stats, "loadavg15", loadavg.load15); + r = pakfire_json_add_double(data, "loadavg15", loadavg.load15); if (r) goto ERROR; // Memory: Total - r = pakfire_json_add_uint64(stats, "mem_total", meminfo.total); + r = pakfire_json_add_uint64(data, "mem_total", meminfo.total); if (r) goto ERROR; // Memory: Available - r = pakfire_json_add_uint64(stats, "mem_available", meminfo.available); + r = pakfire_json_add_uint64(data, "mem_available", meminfo.available); if (r) goto ERROR; // Memory: Used - r = pakfire_json_add_int64(stats, "mem_used", meminfo.used); + r = pakfire_json_add_int64(data, "mem_used", meminfo.used); if (r) goto ERROR; // Memory: Free - r = pakfire_json_add_uint64(stats, "mem_free", meminfo.free); + r = pakfire_json_add_uint64(data, "mem_free", meminfo.free); if (r) goto ERROR; // Memory: Active - r = pakfire_json_add_uint64(stats, "mem_active", meminfo.active); + r = pakfire_json_add_uint64(data, "mem_active", meminfo.active); if (r) goto ERROR; // Memory: Inactive - r = pakfire_json_add_uint64(stats, "mem_inactive", meminfo.inactive); + r = pakfire_json_add_uint64(data, "mem_inactive", meminfo.inactive); if (r) goto ERROR; // Memory: Buffers - r = pakfire_json_add_uint64(stats, "mem_buffers", meminfo.buffers); + r = pakfire_json_add_uint64(data, "mem_buffers", meminfo.buffers); if (r) goto ERROR; // Memory: Cached - r = pakfire_json_add_uint64(stats, "mem_cached", meminfo.cached); + r = pakfire_json_add_uint64(data, "mem_cached", meminfo.cached); if (r) goto ERROR; // Memory: Shared - r = pakfire_json_add_uint64(stats, "mem_shared", meminfo.shared); + r = pakfire_json_add_uint64(data, "mem_shared", meminfo.shared); if (r) goto ERROR; // Swap: Total - r = pakfire_json_add_uint64(stats, "swap_total", meminfo.swap_total); + r = pakfire_json_add_uint64(data, "swap_total", meminfo.swap_total); if (r) goto ERROR; // Swap: Used - r = pakfire_json_add_uint64(stats, "swap_used", meminfo.swap_used); + r = pakfire_json_add_uint64(data, "swap_used", meminfo.swap_used); if (r) goto ERROR; // Swap: Free - r = pakfire_json_add_uint64(stats, "swap_free", meminfo.swap_free); + r = pakfire_json_add_uint64(data, "swap_free", meminfo.swap_free); if (r) goto ERROR; + // Create a new stats object + stats = json_object_new_object(); + if (!stats) { + r = -errno; + goto ERROR; + } + + // Set type + r = pakfire_json_add_string(stats, "type", "stats"); + if (r) + goto ERROR; + + // Set data + r = json_object_object_add(stats, "data", data); + if (r) + goto ERROR; + + // Dereference data so it won't be double-freed later + data = NULL; + // Serialize to string const char* buffer = json_object_to_json_string_length(stats, JSON_C_TO_STRING_SPACED | JSON_C_TO_STRING_PRETTY, &length); @@ -301,6 +322,8 @@ static int pakfire_daemon_submit_stats(sd_event_source* s, uint64_t usec, void* ERROR: if (stats) json_object_put(stats); + if (data) + json_object_put(data); return r; }