From d1383d774971d45e87660ed4c1ecf8f4544697b3 Mon Sep 17 00:00:00 2001 From: Unbit Date: Wed, 13 Nov 2013 19:53:47 +0100 Subject: [PATCH] added multiplier and adder collector --- core/metrics.c | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/core/metrics.c b/core/metrics.c index b9e7d269..5ccdf647 100644 --- a/core/metrics.c +++ b/core/metrics.c @@ -982,6 +982,30 @@ static int64_t uwsgi_metric_collector_accumulator(struct uwsgi_metric *um) { return total; } +static int64_t uwsgi_metric_collector_multiplier(struct uwsgi_metric *um) { + int64_t total = 0; + struct uwsgi_metric_child *umc = um->children; + while(umc) { + struct uwsgi_metric *c = umc->um; + total += *c->value; + umc = umc->next; + } + + return total * um->arg1n; +} + +static int64_t uwsgi_metric_collector_adder(struct uwsgi_metric *um) { + int64_t total = 0; + struct uwsgi_metric_child *umc = um->children; + while(umc) { + struct uwsgi_metric *c = umc->um; + total += *c->value; + umc = umc->next; + } + + return total + um->arg1n; +} + static int64_t uwsgi_metric_collector_avg(struct uwsgi_metric *um) { int64_t total = 0; int64_t count = 0; @@ -1014,6 +1038,8 @@ void uwsgi_metrics_collectors_setup() { uwsgi_register_metric_collector("file", uwsgi_metric_collector_file); uwsgi_register_metric_collector("sum", uwsgi_metric_collector_sum); uwsgi_register_metric_collector("accumulator", uwsgi_metric_collector_accumulator); + uwsgi_register_metric_collector("adder", uwsgi_metric_collector_adder); + uwsgi_register_metric_collector("multiplier", uwsgi_metric_collector_multiplier); uwsgi_register_metric_collector("avg", uwsgi_metric_collector_avg); uwsgi_register_metric_collector("func", uwsgi_metric_collector_func); }