Comparison

mod_measure_client_features/mod_measure_client_features.lua @ 3374:5fdbf416bd40

mod_measure_client_features: Add a module to count the features of each connected client
author Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
date Sun, 11 Nov 2018 14:44:27 +0100
comparison
equal deleted inserted replaced
3373:322e8e7ba7d4 3374: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)