# HG changeset patch # User Link Mauve # Date 1738705083 -3600 # Node ID 5aea644347569442caa2f7749ced76cbb762a094 # Parent 1cf563a9462058e1b8306da20367a0bfebdc1926 mod_measure_client_presence: Switch to the more modern statistics API diff -r 1cf563a94620 -r 5aea64434756 mod_measure_client_presence/mod_measure_client_presence.lua --- a/mod_measure_client_presence/mod_measure_client_presence.lua Tue Feb 04 10:30:33 2025 -0500 +++ b/mod_measure_client_presence/mod_measure_client_presence.lua Tue Feb 04 22:38:03 2025 +0100 @@ -1,6 +1,8 @@ module:set_global(); -local measure = require"core.statsmanager".measure; +local statsmanager = require "prosody.core.statsmanager"; + +local measure_presences = module:metric("gauge", "presence", "client", "Presence show used by clients", {"show"}); local valid_shows = { available = true, @@ -11,16 +13,6 @@ 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, @@ -31,7 +23,7 @@ unavailable = 0, invalid = 0, }; - for _, session in pairs(full_sessions) do + for _, session in pairs(prosody.full_sessions) do local status = "unavailable"; if session.presence then status = session.presence:get_child_text("show") or "available"; @@ -42,7 +34,10 @@ buckets.invalid = buckets.invalid + 1; end end + statsmanager.cork(); + measure_presences:clear(); for bucket, count in pairs(buckets) do - counters[bucket](count) + measure_presences:with_labels(bucket):add(count); end + statsmanager.uncork(); end)