24
1
mirror of https://github.com/processone/ejabberd.git synced 2024-06-14 22:00:16 +02:00
xmpp.chapril.org-ejabberd/mod_pubsub_ng/pubsub_dev.hrl
2013-05-11 20:53:51 +10:00

148 lines
4.4 KiB
Erlang

%-include_lib("exmpp/include/exmpp.hrl").
%-include_lib("exmpp/include/exmpp_jid.hrl").
-include("logger.hrl").
-include("ejabberd.hrl").
-include("mod_roster.hrl").
-include("jlib.hrl").
%-include("pubsub_api.hrl").
-define(NS_JABBER_CLIENT, <<"jabber:client">>).
%%
%% Pubsub Node
-record(pubsub_node_dev,
{
id ,%:: {Pubsub_Host :: exmpp_pubsub:host(),
% NodeId :: undefined | exmpp_pubsub:nodeId()},
idx ,%:: exmpp_pubsub:nodeIdx(),
creation ,%:: {DateTime::erlang:timestamp(), Entity::xmpp_jid:usr_entity()},
level = 0 ,%:: exmpp_pubsub:level(),
owners = [] ,%:: [Owner::xmpp_jid:usr_bare(),...],
itemids = [] ,%:: [ItemId::exmpp_pubsub:itemId()],
options = [] %:: pubsub_options:options_node()
}).
%%
%% Pubsub State
-record(pubsub_state_dev,
{
id ,%:: {Entity :: xmpp_jid:usr_bare(),
% NodeIdx :: exmpp_pubsub:nodeIdx()},
nodeidx ,%:: exmpp_pubsub:nodeIdx(),
affiliation = 'none' ,%:: exmpp_pubsub:affiliation(),
access ,%:: pubsub_options:access_model(),
subscriptions = [] ,%:: [] | exmpp_pubsub:subscriptions(),
%groups = [] ,%:: [Roster_Group::binary()],
itemids = [] %:: [ItemId::exmpp_pubsub:itemId()]
}).
%%
%% Pubsub Item
-record(pubsub_item_dev,
{
id ,%:: {ItemId::exmpp_pubsub:itemId(), NodeIdx::exmpp_pubsub:nodeIdx()},
nodeidx ,%:: exmpp_pubsub:nodeIdx(),
owners = [] ,%:: [Owner::xmpp_jid:usr_bare(),...],
creation ,%:: {DateTime::erlang:timestamp(), Entity::xmpp_jid:usr_entity()},
modification ,%:: {DateTime::erlang:timestamp(), Entity::xmpp_jid:usr_entity()},
payload ,%:: exmpp_pubsub:payload(),
options = [] %:: [] | pubsub_options:options_item()
}).
%%
%% Pubsub Last Item
-record(pubsub_last_item_dev,
{
nodeidx ,%:: exmpp_pubsub:nodeIdx(),
id ,%:: exmpp_pubsub:itemId(),
owners = [] ,%:: [Owner::xmpp_jid:usr_bare(),...],
creation ,%:: {DateTime::erlang:timestamp(), Entity::xmpp_jid:usr_entity()},
payload ,%:: exmpp_pubsub:payload(),
options = [] %:: [] | pubsub_options:options_item()
}).
%%
%% Pubsub Index
-record(pubsub_index_dev,
{
index :: exmpp_pubsub:index(),
last :: exmpp_pubsub:nodeIdx(),
free :: [exmpp_pubsub:nodeIdx()]
}).
%%
%% Pubsub_Subscription_Pending
-record(pubsub_subscription_pending,
{
id ,%:: {Entity::xmpp_jid:usr_bare(), NodeIdx::exmpp_pubsub:nodeIdx()}
nodeidx ,%:: exmpp_pubsub:nodeIdx()
subids %:: [SubId::exmpp_pubsub:subId(),...]
}).
%%
%% Internal data structures
%%
-record(entity,
{
id :: xmpp_jid:usr_bare(),
local :: boolean(),
affiliation :: 'member' | 'owner' | 'publisher',
subscriptions :: []%[exmpp_pubsub:subscription(),...]
}).
%%
-record(node,
{
id :: exmpp_pubsub:nodeId(),
owners :: [Node_Owner::xmpp_jid:usr_bare(),...],
access_model :: pubsub_options:access_model(),
% itemreply :: 'owner' | 'publisher',
% notification_type :: 'headline' | 'normal',
% presence_based_delivery :: boolean(),
rosters_groups_allowed = [] :: [] | pubsub_options:rosters_groups_allowed()
}).
%%
-record(item,
{
access_model ,%:: undefined | pubsub_options:access_model(),
presence_based_delivery ,%:: undefined | boolean(),
rosters_groups_allowed = [],%:: [] | pubsub_options:rosters_groups_allowed()
stanza %::#xmlel{}
}).
%%
-record(cache,
{
%% Entity is online
presence :: undefined | mod_pubsub_dev:presence_cache(),
%% Entity has presence subscriptions with at least one node owner
presence_subscriptions :: undefined | boolean(),
%% Entity has presence subscriptions with at least one node owner
%% and is contained in at least one roster group from the node owner
rosters_groups :: undefined | boolean() %% TODO : use a list
}).
%%
-record(subids,
{
presence = undefined :: undefined | [] | mod_pubsub_dev:resources_subids(),
no_presence = undefined :: undefined | [] | mod_pubsub_dev:resources_subids()
}).
%%
-record(event,
{
host :: xmpp_jid:raw_jid_component_bare(),
component :: xmpp_jid:component_bare(),
entity :: mod_pubsub_dev:entity(),
node :: mod_pubsub_dev:n0de(),
cache :: mod_pubsub_dev:cache(),
subids :: mod_pubsub_dev:subids()
}).