annotate mod_measure_client_presence/mod_measure_client_presence.lua @ 6562:5da6fb562df9 default tip

mod_unified_push: Fix push error handling (fixes #2000) Use the error object that send_iq() passes as an argument to it's reject callback instead of attempting and failing to do the parsing in the callback itself.
author kmq
date Mon, 06 Jul 2026 14:23:57 +0200
parents 5aea64434756
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
2789
37ae0801f925 mod_measure_client_presence: Counts presence show and reports using 0.10+ statistics API.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
diff changeset
1 module:set_global();
37ae0801f925 mod_measure_client_presence: Counts presence show and reports using 0.10+ statistics API.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
diff changeset
2
6159
5aea64434756 mod_measure_client_presence: Switch to the more modern statistics API
Link Mauve <linkmauve@linkmauve.fr>
parents: 2789
diff changeset
3 local statsmanager = require "prosody.core.statsmanager";
5aea64434756 mod_measure_client_presence: Switch to the more modern statistics API
Link Mauve <linkmauve@linkmauve.fr>
parents: 2789
diff changeset
4
5aea64434756 mod_measure_client_presence: Switch to the more modern statistics API
Link Mauve <linkmauve@linkmauve.fr>
parents: 2789
diff changeset
5 local measure_presences = module:metric("gauge", "presence", "client", "Presence show used by clients", {"show"});
2789
37ae0801f925 mod_measure_client_presence: Counts presence show and reports using 0.10+ statistics API.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
diff changeset
6
37ae0801f925 mod_measure_client_presence: Counts presence show and reports using 0.10+ statistics API.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
diff changeset
7 local valid_shows = {
37ae0801f925 mod_measure_client_presence: Counts presence show and reports using 0.10+ statistics API.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
diff changeset
8 available = true,
37ae0801f925 mod_measure_client_presence: Counts presence show and reports using 0.10+ statistics API.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
diff changeset
9 chat = true,
37ae0801f925 mod_measure_client_presence: Counts presence show and reports using 0.10+ statistics API.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
diff changeset
10 away = true,
37ae0801f925 mod_measure_client_presence: Counts presence show and reports using 0.10+ statistics API.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
diff changeset
11 dnd = true,
37ae0801f925 mod_measure_client_presence: Counts presence show and reports using 0.10+ statistics API.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
diff changeset
12 xa = true,
37ae0801f925 mod_measure_client_presence: Counts presence show and reports using 0.10+ statistics API.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
diff changeset
13 unavailable = true,
37ae0801f925 mod_measure_client_presence: Counts presence show and reports using 0.10+ statistics API.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
diff changeset
14 }
37ae0801f925 mod_measure_client_presence: Counts presence show and reports using 0.10+ statistics API.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
diff changeset
15
37ae0801f925 mod_measure_client_presence: Counts presence show and reports using 0.10+ statistics API.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
diff changeset
16 module:hook("stats-update", function ()
37ae0801f925 mod_measure_client_presence: Counts presence show and reports using 0.10+ statistics API.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
diff changeset
17 local buckets = {
37ae0801f925 mod_measure_client_presence: Counts presence show and reports using 0.10+ statistics API.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
diff changeset
18 available = 0,
37ae0801f925 mod_measure_client_presence: Counts presence show and reports using 0.10+ statistics API.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
diff changeset
19 chat = 0,
37ae0801f925 mod_measure_client_presence: Counts presence show and reports using 0.10+ statistics API.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
diff changeset
20 away = 0,
37ae0801f925 mod_measure_client_presence: Counts presence show and reports using 0.10+ statistics API.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
diff changeset
21 dnd = 0,
37ae0801f925 mod_measure_client_presence: Counts presence show and reports using 0.10+ statistics API.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
diff changeset
22 xa = 0,
37ae0801f925 mod_measure_client_presence: Counts presence show and reports using 0.10+ statistics API.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
diff changeset
23 unavailable = 0,
37ae0801f925 mod_measure_client_presence: Counts presence show and reports using 0.10+ statistics API.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
diff changeset
24 invalid = 0,
37ae0801f925 mod_measure_client_presence: Counts presence show and reports using 0.10+ statistics API.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
diff changeset
25 };
6159
5aea64434756 mod_measure_client_presence: Switch to the more modern statistics API
Link Mauve <linkmauve@linkmauve.fr>
parents: 2789
diff changeset
26 for _, session in pairs(prosody.full_sessions) do
2789
37ae0801f925 mod_measure_client_presence: Counts presence show and reports using 0.10+ statistics API.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
diff changeset
27 local status = "unavailable";
37ae0801f925 mod_measure_client_presence: Counts presence show and reports using 0.10+ statistics API.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
diff changeset
28 if session.presence then
37ae0801f925 mod_measure_client_presence: Counts presence show and reports using 0.10+ statistics API.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
diff changeset
29 status = session.presence:get_child_text("show") or "available";
37ae0801f925 mod_measure_client_presence: Counts presence show and reports using 0.10+ statistics API.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
diff changeset
30 end
37ae0801f925 mod_measure_client_presence: Counts presence show and reports using 0.10+ statistics API.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
diff changeset
31 if valid_shows[status] ~= nil then
37ae0801f925 mod_measure_client_presence: Counts presence show and reports using 0.10+ statistics API.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
diff changeset
32 buckets[status] = buckets[status] + 1;
37ae0801f925 mod_measure_client_presence: Counts presence show and reports using 0.10+ statistics API.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
diff changeset
33 else
37ae0801f925 mod_measure_client_presence: Counts presence show and reports using 0.10+ statistics API.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
diff changeset
34 buckets.invalid = buckets.invalid + 1;
37ae0801f925 mod_measure_client_presence: Counts presence show and reports using 0.10+ statistics API.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
diff changeset
35 end
37ae0801f925 mod_measure_client_presence: Counts presence show and reports using 0.10+ statistics API.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
diff changeset
36 end
6159
5aea64434756 mod_measure_client_presence: Switch to the more modern statistics API
Link Mauve <linkmauve@linkmauve.fr>
parents: 2789
diff changeset
37 statsmanager.cork();
5aea64434756 mod_measure_client_presence: Switch to the more modern statistics API
Link Mauve <linkmauve@linkmauve.fr>
parents: 2789
diff changeset
38 measure_presences:clear();
2789
37ae0801f925 mod_measure_client_presence: Counts presence show and reports using 0.10+ statistics API.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
diff changeset
39 for bucket, count in pairs(buckets) do
6159
5aea64434756 mod_measure_client_presence: Switch to the more modern statistics API
Link Mauve <linkmauve@linkmauve.fr>
parents: 2789
diff changeset
40 measure_presences:with_labels(bucket):add(count);
2789
37ae0801f925 mod_measure_client_presence: Counts presence show and reports using 0.10+ statistics API.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
diff changeset
41 end
6159
5aea64434756 mod_measure_client_presence: Switch to the more modern statistics API
Link Mauve <linkmauve@linkmauve.fr>
parents: 2789
diff changeset
42 statsmanager.uncork();
2789
37ae0801f925 mod_measure_client_presence: Counts presence show and reports using 0.10+ statistics API.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
diff changeset
43 end)