25
1
mirror of https://github.com/processone/ejabberd.git synced 2024-11-04 15:36:57 +01:00
xmpp.chapril.org-ejabberd/include/pubsub.hrl

208 lines
6.4 KiB
Erlang
Raw Normal View History

%%% ====================================================================
%%% ``The contents of this file are subject to the Erlang Public License,
%%% Version 1.1, (the "License"); you may not use this file except in
%%% compliance with the License. You should have received a copy of the
%%% Erlang Public License along with this software. If not, it can be
%%% retrieved via the world wide web at http://www.erlang.org/.
2012-09-11 15:45:59 +02:00
%%%
%%% Software distributed under the License is distributed on an "AS IS"
%%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
%%% the License for the specific language governing rights and limitations
%%% under the License.
2012-09-11 15:45:59 +02:00
%%%
%%% The Initial Developer of the Original Code is ProcessOne.
2013-03-27 10:36:48 +01:00
%%% Portions created by ProcessOne are Copyright 2006-2013, ProcessOne
%%% All Rights Reserved.''
2013-03-27 10:36:48 +01:00
%%% This software is copyright 2006-2013, ProcessOne.
%%%
%%%
2013-03-27 10:36:48 +01:00
%%% copyright 2006-2013 ProcessOne
%%%
%%% This file contains pubsub types definition.
%%% ====================================================================
2012-09-11 15:45:59 +02:00
-define(ERR_EXTENDED(E, C),
mod_pubsub:extended_error(E, C)).
-define(MAXITEMS, 10).
-define(MAX_PAYLOAD_SIZE, 60000).
%% -------------------------------
%% Pubsub types
2012-09-11 15:45:59 +02:00
-type(hostPubsub() :: binary()).
%% <p><tt>hostPubsub</tt> is the name of the PubSub service. For example, it can be
%% <tt>"pubsub.localhost"</tt>.</p>
2012-09-11 15:45:59 +02:00
-type(hostPEP() :: {binary(), binary(), <<>>}).
%% @type hostPEP() = {User, Server, Resource}
%% User = string()
%% Server = string()
%% Resource = [].
%% <p>For example, it can be :
%% ```{"bob", "example.org", []}'''.</p>
2012-09-11 15:45:59 +02:00
-type(host() :: hostPubsub() | hostPEP()).
%% @type host() = hostPubsub() | hostPEP().
2012-09-11 15:45:59 +02:00
-type(nodeId() :: binary()).
%% @type nodeId() = binary().
%% <p>A node is defined by a list of its ancestors. The last element is the name
2012-09-11 15:45:59 +02:00
%% of the current node. For example:
%% ```<<"/home/localhost/user">>'''</p>
2012-09-11 15:45:59 +02:00
-type(nodeIdx() :: pos_integer()).
%% @type nodeIdx() = integer().
2012-09-11 15:45:59 +02:00
-type(itemId() :: binary()).
%% @type itemId() = string().
2012-09-11 15:45:59 +02:00
-type(subId() :: binary()).
%% @type subId() = string().
2012-09-11 15:45:59 +02:00
%% @type payload() = [#xmlelement{} | #xmlcdata{}].
%% @type stanzaError() = #xmlelement{}.
2012-09-11 15:45:59 +02:00
%% Example:
%% ```{xmlelement, "error",
%% [{"code", Code}, {"type", Type}],
%% [{xmlelement, Condition, [{"xmlns", ?NS_STANZAS}], []}]}'''
%% @type pubsubIQResponse() = #xmlelement{}.
%% Example:
%% ```{xmlelement, "pubsub",
%% [{"xmlns", ?NS_PUBSUB_EVENT}],
%% [{xmlelement, "affiliations", [],
%% []}]}'''
2012-09-11 15:45:59 +02:00
-type(nodeOption() ::
{Option::atom(),
Value::binary() | [binary()] | boolean() | non_neg_integer()
}).
-type(nodeOptions() :: [NodeOption::mod_pubsub:nodeOption(),...]).
%% @type nodeOption() = {Option, Value}
%% Option = atom()
%% Value = term().
%% Example:
%% ```{deliver_payloads, true}'''
2012-09-11 15:45:59 +02:00
-type(subOption() ::
{Option::atom(),
Value::binary() | [binary()] | boolean()
}).
-type(subOptions() :: [SubOption::mod_pubsub:subOption(),...]).
%% @type nodeType() = string().
%% <p>The <tt>nodeType</tt> is a string containing the name of the PubSub
%% plugin to use to manage a given node. For example, it can be
%% <tt>"flat"</tt>, <tt>"hometree"</tt> or <tt>"blog"</tt>.</p>
%% @type jid() = {jid, User, Server, Resource, LUser, LServer, LResource}
%% User = string()
%% Server = string()
%% Resource = string()
%% LUser = string()
%% LServer = string()
%% LResource = string().
2012-09-11 15:45:59 +02:00
%-type(ljid() :: {binary(), binary(), binary()}).
%% @type ljid() = {User, Server, Resource}
%% User = string()
%% Server = string()
%% Resource = string().
2012-09-11 15:45:59 +02:00
-type(affiliation() :: 'none'
| 'owner'
| 'publisher'
%| 'publish-only'
| 'member'
| 'outcast'
).
%% @type affiliation() = 'none' | 'owner' | 'publisher' | 'publish-only' | 'member' | 'outcast'.
2012-09-11 15:45:59 +02:00
-type(subscription() :: 'none'
| 'pending'
| 'unconfigured'
| 'subscribed'
).
%% @type subscription() = 'none' | 'pending' | 'unconfigured' | 'subscribed'.
2012-09-11 15:45:59 +02:00
-type(accessModel() :: 'open'
| 'presence'
| 'roster'
| 'authorize'
| 'whitelist'
).
%% @type accessModel() = 'open' | 'presence' | 'roster' | 'authorize' | 'whitelist'.
2012-09-11 15:45:59 +02:00
-type(publishModel() :: 'publishers'
| 'subscribers'
| 'open'
).
-record(pubsub_index,
{
2012-09-11 15:45:59 +02:00
index :: atom(),
last :: mod_pubsub:nodeIdx(),
free :: [mod_pubsub:nodeIdx()]
}).
-record(pubsub_node,
{
2012-09-11 15:45:59 +02:00
nodeid ,%:: {Host::mod_pubsub:host(), NodeId::mod_pubsub:nodeId()},
id ,%:: mod_pubsub:nodeIdx(),
parents = [] ,%:: [Parent_NodeId::mod_pubsub:nodeId()],
type = <<"flat">> ,%:: binary(),
owners = [] ,%:: [Owner::ljid(),...],
options = [] %:: mod_pubsub:nodeOptions()
}).
2012-09-11 15:45:59 +02:00
%-record(pubsub_state,
% {stateid, nodeidx, items = [], affiliation = none,
% subscriptions = []}).
-record(pubsub_state,
{
2012-09-11 15:45:59 +02:00
stateid ,%:: {Entity::ljid(), NodeIdx::mod_pubsub:nodeIdx()},
nodeidx ,%:: mod_pubsub:nodeIdx(),
items = [] ,%:: [ItemId::mod_pubsub:itemId()],
affiliation = 'none' ,%:: mod_pubsub:affiliation(),
subscriptions = [] %:: [{mod_pubsub:subscription(), mod_pubsub:subId()}]
}).
2012-09-11 15:45:59 +02:00
%-record(pubsub_item,
% {itemid, nodeidx, creation = {unknown, unknown},
% modification = {unknown, unknown}, payload = []}).
-record(pubsub_item,
{
2012-09-11 15:45:59 +02:00
itemid ,%:: {mod_pubsub:itemId(), mod_pubsub:nodeIdx()},
nodeidx ,%:: mod_pubsub_nodeIdx(),
creation = {unknown, unknown} ,%:: {erlang:timestamp(), ljid()},
modification = {unknown, unknown} ,%:: {erlang:timestamp(), ljid()},
payload = [] %:: mod_pubsub:payload()
}).
2012-09-11 15:45:59 +02:00
%-record(pubsub_subscription, {subid, options}).
-record(pubsub_subscription,
{
2012-09-11 15:45:59 +02:00
subid ,%:: mod_pubsub:subId(),
options %:: [] | mod_pubsub:subOptions()
}).
2012-09-11 15:45:59 +02:00
%-record(pubsub_last_item,
% {nodeid, itemid, creation, payload}).
-record(pubsub_last_item,
{
2012-09-11 15:45:59 +02:00
nodeid ,%:: mod_pubsub:nodeIdx(),
itemid ,%:: mod_pubsub:itemId(),
creation ,%:: {erlang:timestamp(), ljid()},
payload %:: mod_pubsub:payload()
}).