Mercurial > prosody-modules
view mod_measure_client_presence/mod_measure_client_presence.lua @ 4813:0a257d1402c3
mod_muc_rtbl: Optimize case with zero hashes
On the assumption that during quiet times between torrents of spam,
the hash set would be empty. There would be no point in doing the
operations and hashes to check for a match in that case.
author | Kim Alvefur <zash@zash.se> |
---|---|
date | Mon, 06 Dec 2021 18:19:19 +0100 |
parents | 37ae0801f925 |
children |
line wrap: on
line source
module:set_global(); local measure = require"core.statsmanager".measure; local valid_shows = { available = true, chat = true, away = true, dnd = true, xa = true, unavailable = true, } local counters = { available = measure("amount", "client_presence.available"), chat = measure("amount", "client_presence.chat"), away = measure("amount", "client_presence.away"), dnd = measure("amount", "client_presence.dnd"), xa = measure("amount", "client_presence.xa"), unavailable = measure("amount", "client_presence.unavailable"), invalid = measure("amount", "client_presence.invalid"); }; module:hook("stats-update", function () local buckets = { available = 0, chat = 0, away = 0, dnd = 0, xa = 0, unavailable = 0, invalid = 0, }; for _, session in pairs(full_sessions) do local status = "unavailable"; if session.presence then status = session.presence:get_child_text("show") or "available"; end if valid_shows[status] ~= nil then buckets[status] = buckets[status] + 1; else buckets.invalid = buckets.invalid + 1; end end for bucket, count in pairs(buckets) do counters[bucket](count) end end)