view mod_measure_client_features/mod_measure_client_features.lua @ 4976:75b6e5df65f9

various: Improve error reporting if missing file server module on 0.12 If there is some error loading net.http.files then it would be swallowed by the pcall and then it would proceed to trying mod_http_files, which might cause unexpected behavior on 0.12 Ref #1765
author Kim Alvefur <zash@zash.se>
date Mon, 18 Jul 2022 22:47:54 +0200
parents 5fdbf416bd40
children
line wrap: on
line source

module:set_global();

local measure = require"core.statsmanager".measure;

local disco_ns = "http://jabber.org/protocol/disco#info";

local counters = {
	total = measure("amount", "client_features.total");
};

module:hook("stats-update", function ()
	local total = 0;
	local buckets = {};
	for _, session in pairs(prosody.full_sessions) do
		local disco_info = session.caps_cache;
		if disco_info ~= nil then
			for feature in disco_info:childtags("feature", disco_ns) do
				local var = feature.attr.var;
				if var ~= nil then
					if buckets[var] == nil then
						buckets[var] = 0;
					end
					buckets[var] = buckets[var] + 1;
				end
			end
			total = total + 1;
		end
	end
	for bucket, count in pairs(buckets) do
		if counters[bucket] == nil then
			counters[bucket] = measure("amount", "client_features."..bucket);
		end
		counters[bucket](count);
	end
	counters.total(total);
end)