return 1;
}
+static int
+reader_client_input_dump_reset(struct reader_client *client,
+ const char *const *args)
+{
+ (void)reader_client_input_dump(client, args);
+ stats_metrics_reset(client->metrics);
+ return 1;
+}
+
static int
reader_client_input_args(struct connection *conn, const char *const *args)
{
args++;
if (strcmp(cmd, "DUMP") == 0)
return reader_client_input_dump(client, args);
+ else if (strcmp(cmd, "DUMP-RESET") == 0)
+ return reader_client_input_dump_reset(client, args);
return 1;
}
pool_unref(&metrics->pool);
}
+void stats_metrics_reset(struct stats_metrics *metrics)
+{
+ struct metric *const *metricp;
+
+ array_foreach(&metrics->metrics, metricp) {
+ timing_reset((*metricp)->duration_timing);
+ for (unsigned int i = 0; i < (*metricp)->fields_count; i++)
+ timing_reset((*metricp)->fields[i].timing);
+ }
+}
+
struct event_filter *
stats_metrics_get_event_filter(struct stats_metrics *metrics)
{
struct stats_metrics *stats_metrics_init(const struct stats_settings *set);
void stats_metrics_deinit(struct stats_metrics **metrics);
+/* Reset all metrics */
+void stats_metrics_reset(struct stats_metrics *metrics);
+
/* Returns event filter created from the stats_settings. */
struct event_filter *
stats_metrics_get_event_filter(struct stats_metrics *metrics);