MINOR: stats: add stats_dump_info_fields() to dump one field per line
authorWilly Tarreau <w@1wt.eu>
Mon, 11 Jan 2016 17:27:29 +0000 (18:27 +0100)
committerWilly Tarreau <w@1wt.eu>
Fri, 11 Mar 2016 16:08:04 +0000 (17:08 +0100)
This function dumps non-empty fields, one per line with their name and
values, in the same format as is currently used by "show info". It relies
on previously added stats_emit_raw_data_field().

src/dumpstats.c

index 4f21eea..05facda 100644 (file)
@@ -2824,6 +2824,25 @@ static int stats_emit_raw_data_field(struct chunk *out, const struct field *f)
        }
 }
 
+/* Dump all fields from <info> into <out> using the "show info" format (name: value) */
+static int stats_dump_info_fields(struct chunk *out, const struct field *info)
+{
+       int field;
+
+       for (field = 0; field < INF_TOTAL_FIELDS; field++) {
+               if (!field_format(info, field))
+                       continue;
+
+               if (!chunk_appendf(out, "%s: ", info_field_names[field]))
+                       return 0;
+               if (!stats_emit_raw_data_field(out, &info[field]))
+                       return 0;
+               if (!chunk_strcat(out, "\n"))
+                       return 0;
+       }
+       return 1;
+}
+
 /* This function dumps information onto the stream interface's read buffer.
  * It returns 0 as long as it does not complete, non-zero upon completion.
  * No state is used.