Merge 0.10->trunk
[prosody.git] / core / statsmanager.lua
index 83df61819007d3809467af10e13421baa33c2fc5..7771a2b325ffcce80d8c90d34ce23f15aa50359b 100644 (file)
@@ -23,29 +23,22 @@ if stats_interval then
                return f(name);
        end
 
-       local mark_collection_start = measure("duration", "stats.collection_time");
-       local mark_processing_start = measure("duration", "stats.processing_time");
+       local mark_collection_start = measure("times", "stats.collection");
+       local mark_processing_start = measure("times", "stats.processing");
 
        function collect()
                local mark_collection_done = mark_collection_start();
+               fire_event("stats-update");
                changed_stats, stats_extra = {}, {};
-               for name, getter in pairs(stats.get_stats()) do
+               for stat_name, getter in pairs(stats.get_stats()) do
                        local type, value, extra = getter();
-                       local stat_name = name..":"..type;
                        local old_value = latest_stats[stat_name];
                        latest_stats[stat_name] = value;
                        if value ~= old_value then
                                changed_stats[stat_name] = value;
                        end
                        if extra then
-                               print(stat_name, extra)
                                stats_extra[stat_name] = extra;
-                               if type == "duration" then
-                                       local rate = extra.rate;
-                                       local rate_name = name..":rate";
-                                       latest_stats[rate_name] = rate;
-                                       changed_stats[rate_name] = rate;
-                               end
                        end
                end
                mark_collection_done();
@@ -56,6 +49,7 @@ if stats_interval then
        end
 
        timer.add_task(stats_interval, collect);
+       prosody.events.add_handler("server-started", function () collect() end, -1);
 else
        log("debug", "Statistics collection is disabled");
        -- nop
@@ -72,4 +66,7 @@ return {
        get_stats = function ()
                return latest_stats, changed_stats, stats_extra;
        end;
+       get = function (name)
+               return latest_stats[name], stats_extra[name];
+       end;
 };