Mercurial > prosody-hg
view core/features.lua @ 13903:4af7d00a2966
MUC: occupant: refactor to allow storing more than just presence for a session
Previously a "session" (i.e. a full JID joined to a MUC) was stored as simply
a mapping of full JIDs->presence, contained within occupant objects (an
occupant object groups all sessions behind a certain nick in the MUC).
To enable developing GC3 and other features, it would be helpful if we can
store additional metadata when a client joins a room, for example, whether it
has opted out of receiving presence stanzas (a GC3 feature).
This changes the internal data structure, which shouldn't be used outside this
module, it adds a new :get_session() method, and modifies the :each_session()
iterator to return the session as an additional result (which should be
backwards compatible with code that just consumes the existing two results).
| author | Matthew Wild <mwild1@gmail.com> |
|---|---|
| date | Mon, 11 Nov 2024 12:47:01 +0000 |
| parents | cc406878209d |
| children | 565debd9c37a |
line wrap: on
line source
local set = require "prosody.util.set"; return { available = set.new{ -- mod_bookmarks bundled "mod_bookmarks"; -- mod_server_info bundled "mod_server_info"; -- mod_flags bundled "mod_flags"; -- mod_cloud_notify bundled "mod_cloud_notify"; -- mod_muc has built-in vcard support "muc_vcard"; -- mod_http_altconnect bundled "http_altconnect"; -- Roles, module.may and per-session authz "permissions"; -- prosody.* namespace "loader"; -- "keyval+" store "keyval+"; -- Support for target filter in net.resolvers.basic "net-connect-filter"; "s2sout-pre-connect-event"; -- prosody:guest, prosody:registered, prosody:member "split-user-roles"; -- new moduleapi methods "getopt-enum"; "getopt-interval"; "getopt-period"; "getopt-integer"; -- new module.ready() "module-ready"; -- SIGUSR1 and 2 events "signal-events"; }; };
