mod_measure_client_features/mod_measure_client_features.lua
changeset 3378 5fdbf416bd40
equal deleted inserted replaced
3377:322e8e7ba7d4 3378:5fdbf416bd40
       
     1 module:set_global();
       
     2 
       
     3 local measure = require"core.statsmanager".measure;
       
     4 
       
     5 local disco_ns = "http://jabber.org/protocol/disco#info";
       
     6 
       
     7 local counters = {
       
     8 	total = measure("amount", "client_features.total");
       
     9 };
       
    10 
       
    11 module:hook("stats-update", function ()
       
    12 	local total = 0;
       
    13 	local buckets = {};
       
    14 	for _, session in pairs(prosody.full_sessions) do
       
    15 		local disco_info = session.caps_cache;
       
    16 		if disco_info ~= nil then
       
    17 			for feature in disco_info:childtags("feature", disco_ns) do
       
    18 				local var = feature.attr.var;
       
    19 				if var ~= nil then
       
    20 					if buckets[var] == nil then
       
    21 						buckets[var] = 0;
       
    22 					end
       
    23 					buckets[var] = buckets[var] + 1;
       
    24 				end
       
    25 			end
       
    26 			total = total + 1;
       
    27 		end
       
    28 	end
       
    29 	for bucket, count in pairs(buckets) do
       
    30 		if counters[bucket] == nil then
       
    31 			counters[bucket] = measure("amount", "client_features."..bucket);
       
    32 		end
       
    33 		counters[bucket](count);
       
    34 	end
       
    35 	counters.total(total);
       
    36 end)