Module mod_pubsub_odbc [erl svg]

The module mod_pubsub_odbc is the core of the PubSub extension.

Copyright © 2006-2012 ProcessOne

Version: 3.0.0-alpha-5, May 23 2012 07:15:13

Behaviours: gen_mod, gen_server.

Authors: Christophe Romain (christophe.romain@process-one.net) [web site: http://www.process-one.net/].

References

Description

The module mod_pubsub_odbc is the core of the PubSub extension. It relies on PubSub plugins for a large part of its functions.

Data Types

accessModel()

accessModel() = open | presence | roster | authorize | whitelist

affiliation()

affiliation() = none | owner | publisher | 'publish-only' | member | outcast

bareUsr()

bareUsr() = {User, Server, Resource}

features()

features() = [Feature]

fullUsr()

fullUsr() = {User, Server, Resource}

host()

host() = hostPubsub() | hostPEP()

hostPEP()

hostPEP() = {User, Server, Resource}

hostPubsub()

hostPubsub() = binary()

hostPubsub is the name of the PubSub service. For example, it can be pubsub.localhost.

itemId()

itemId() = binary()

An itemId is the name of an Item. It can be anything. For example: 38964 my-tune FD6SBE6a27d

jidComponent()

jidComponent() = {jid, Raw, Node, Domain, Resource}

jidContact()

jidContact() = {jid, Raw, Node, Domain, Resource}

jidEntity()

jidEntity() = {jid, Raw, Node, Domain, Resource}

ljid()

ljid() = {User, Server, Resource}

nodeId()

nodeId() = binary()

A nodeId is the name of a Node. It can be anything and may represent some hierarchical tree depending of the node type. For example: /home/localhost/user/node princely_musings http://jabber.org/protocol/tune My-Own_Node

nodeIdx()

nodeIdx() = integer()

nodeOption()

nodeOption() = {Option, Value}

Option = atom() Value = term().

Example:
      {deliver_payloads, true}

nodeType()

nodeType() = string()

The nodeType is a string containing the name of the PubSub plugin to use to manage a given node. For example, it can be "flat", "hometree" or "blog".

now()

now() = {Megaseconds, Seconds, Microseconds}

payload()

payload() = [] | [#xmlel{}]

pubsubIQResponse()

pubsubIQResponse() = #xmlel{}

Example:

         #xmlel{name = 'pubsub',
                ns = ?NS_PUBSUB,
                children = [
                  #xmlel{name = 'affiliations'
                         ns = ?NS_PUBSUB
                  }
                ]
               }

pubsubIndex()

pubsubIndex() = {pubsub_index, Index, Last, Free}

Index = atom() Last = nodeIdx() Free = [nodeIdx()].

Internal pubsub index table.

pubsubItem()

pubsubItem() = {pubsub_item, Id, NodeIdx, Creation, Modification, Payload}

This is the format of the published items table. The type of the table is: set,disc,fragmented.

pubsubLastItem()

pubsubLastItem() = {pubsub_last_item, NodeId, ItemId, Creation, Payload}

This is the format of the last items table. it stores last item payload for every node

pubsubNode()

pubsubNode() = {pubsub_node, Id, Idx, Parents, Type, Owners, Options}

This is the format of the nodes table. The type of the table is: set,ram/disc.

The parents and type fields are indexed.

idx is an integer.

pubsubState()

pubsubState() = {pubsub_state, Id, NodeIdx, Items, Affiliation, Subscriptions}

This is the format of the affiliations table. The type of the table is: set,ram/disc.

pubsubSubscription()

pubsubSubscription() = {pubsub_subscription, SubId, Options}

This is the format of the subscriptions table. The type of the table is: set,ram/disc.

stanzaError()

stanzaError() = #xmlel{}

Example:

         #xmlel{name = 'error'
                ns = ?NS_STANZAS,
                attrs = [
                  #xmlattr{
                    name = 'code',
                    ns = ?NS_STANZAS,
                    value = Code
                  },
                attrs = [
                  #xmlattr{
                    name = 'type',
                    ns = ?NS_STANZAS,
                    value = Type
                  }
                ]}

subId()

subId() = binary()

subOption()

subOption() = {Option, Value}

Option = atom() Value = term().

subscription()

subscription() = none | pending | unconfigured | subscribed

Function Index

add_extended_headers/2*
add_headers/4*
add_message_type/2*
add_opt/3*
add_shim_headers/2*
adhoc_request/6*Processes an Ad Hoc Command.
affiliation_to_string/1Convert an affiliation type from atom to string.
broadcast/7*
broadcast/8*
broadcast/9*
broadcast_config_notification/6*
broadcast_created_node/5*
broadcast_publish_item/9*
broadcast_purge_node/5*
broadcast_removed_node/5*
broadcast_retract_items/6*
broadcast_retract_items/7*
caps_update/3
code_change/3
collection_shim/1*
command_disco_info/3*
create_node/5Create new pubsub nodes.
create_node/7*
delete_item/4Delete item from a PubSub node.
delete_item/5*
delete_node/3Delete specified node and all childs.
disco_features/3*
disco_identity/3*
disco_items/3*
disco_local_features/5
disco_local_identity/5
disco_local_items/5
disco_sm_features/5
disco_sm_identity/5
disco_sm_items/5
do_route/7*
escape/1
event_stanza/1*Build pubsub event stanza.
event_stanza/2*
event_stanza/3*
event_stanza/5*
event_stanza/6*
event_stanza_with_delay/3*
event_stanza_withmoreels/2*
extended_error/2
extended_error/3
extended_headers/1*
features/0*
features/1*
features/2*
find_authorization_response/1*
get_affiliations/3*Return the list of affiliations as an XMPP response.
get_allowed_items_call/6*
get_allowed_items_call/7*
get_cached_item/2
get_configure/5
get_configure_xfields/4*
get_default/4*
get_item/3
get_items/2
get_items/7*Return the items of a given node.
get_max_items_node/1*
get_option/2*
get_option/3*
get_options/5*
get_options_helper/6*
get_pending_nodes/3*
get_presence_and_roster_permissions/5*
get_resource_state/3*
get_roster_info/4*
get_subscriptions/3*
get_subscriptions/4*Return the list of subscriptions as an XMPP response.
handle_authorization_response/5*
handle_call/3
handle_cast/2
handle_info/2
host/1*
in_subscription/6
init/1
init_nodes/4*
init_plugins/3*Call the init/1 function for each plugin declared in the config file.
init_send_loop/2*
iq_command/6*
iq_disco_info/4*
iq_disco_items/4*
iq_get_vcard/1*
iq_pubsub/6*
iq_pubsub/8*
iq_pubsub_owner/6*
iq_sm/3
is_last_item_cache_enabled/1*
is_to_deliver/5*Check if a notification must be delivered or not based on node and subscription options.
itemAttr/1*
itemsEls/1*
max_items/2*Return the maximum number of items for a given node.
nodeAttr/1*
node_action/4
node_call/3*node plugin call.
node_disco_info/3*
node_options/1*
node_owners/3*Return list of node owners.
node_owners_call/2*
node_subscriptions/6*
node_subscriptions_bare/4*
node_subscriptions_full/3*
node_to_deliver/2*
node_to_string/1Convert a node type from pubsubNode to string.
notify_owners/6*
odbc_conn/1*
on_user_offline/3
out_subscription/4
payload_els_ns/1*Count occurence of XML elements in payload.
payload_els_ns/3*
plugins/1*
presence/2*
presence_can_deliver/2*
presence_probe/3
publish_item/6Publish item to a PubSub node.
purge_node/3*Delete all items of specified node owned by JID.
purge_offline/1*
read_sub/5*
remove_user/2
select_type/3*
select_type/4*
send_authorization_approval/4*Send a message to JID with the supplied Subscription.
send_authorization_request/2*
send_items/6Resend the items of a node to the user.
send_loop/1
send_pending_auth_events/3*Send a subscription approval form to Owner for all pending subscriptions on Host and Node.
send_pending_node_form/4*Sends the process pending subscriptions XForm for Host to Owner.
service_jid/1*Generate pubsub service JID.
set_affiliations/4*
set_cached_item/5*
set_configure/5
set_options/5*
set_options_helper/5*
set_subscriptions/4*
set_xoption/3*
start/2
start_link/2
state_can_deliver/2*
stop/1
string_to_affiliation/1Convert an affiliation type from string to atom.
string_to_node/1
string_to_subscription/1Convert a subscription type from string to atom.
sub_option_can_deliver/3*
sub_to_deliver/4*
sub_with_options/1*
sub_with_options/3*
subid_shim/1*
subscribe_node/5Accepts or rejects subcription requests on a PubSub node.
subscribed_nodes_by_jid/2*
subscription_to_string/1Convert a subscription type from atom to string.
terminate/2
terminate_plugins/4*
transaction/3*
transaction/4*plugin transaction handling.
transaction_on_nodes/3*
transaction_retry/4*
tree_action/3
tree_call/3*node tree plugin call.
uniqid/0*
unset_cached_item/2*
unsubscribe_node/5Unsubscribe JID from the Node.
unsubscribe_user/2*
update_auth/7*
user_resource/3*
user_resources/2*
write_sub/4*

Function Details

add_extended_headers/2 *

add_extended_headers(Stanza, HeaderEls) -> any()

add_headers/4 *

add_headers(Xmlel, HeaderName, HeaderNS, HeaderEls) -> any()

add_message_type/2 *

add_message_type(Xmlel, Type) -> any()

add_opt/3 *

add_opt(Key, Value, Opts) -> any()

add_shim_headers/2 *

add_shim_headers(Stanza, HeaderEls) -> any()

adhoc_request/6 *

adhoc_request(Host, ServerHost, Owner, Adhoc_request, Access, Plugins) -> any()

Processes an Ad Hoc Command.

affiliation_to_string/1

affiliation_to_string(X1::Affiliation) -> AffiliationStr

Convert an affiliation type from atom to string.

broadcast/7 *

broadcast(Host, Node, NodeId, Type, NodeOptions, Notify, Stanzas) -> any()

broadcast/8 *

broadcast(Host, Node, NodeId, Type, NodeOptions, Subscriptions, Stanza, SHIM) -> any()

broadcast/9 *

broadcast(Host, Node, NodeId, Type, NodeOptions, Notify, Condition, Stanza, SHIM) -> any()

broadcast_config_notification/6 *

broadcast_config_notification(Host, Node, NodeId, Type, NodeOptions, Lang) -> any()

broadcast_created_node/5 *

broadcast_created_node(Host, Node, NodeId, Type, NodeOptions) -> any()

broadcast_publish_item/9 *

broadcast_publish_item(Host, Node, NodeId, Type, NodeOptions, ItemId, Publisher, Payload, Removed) -> any()

broadcast_purge_node/5 *

broadcast_purge_node(Host, Node, NodeId, Type, NodeOptions) -> any()

broadcast_removed_node/5 *

broadcast_removed_node(Host, Node, NodeId, Type, NodeOptions) -> any()

broadcast_retract_items/6 *

broadcast_retract_items(Host, Node, NodeId, Type, NodeOptions, ItemIds) -> any()

broadcast_retract_items/7 *

broadcast_retract_items(Host, Node, NodeId, Type, NodeOptions, ItemIds, Notify) -> any()

caps_update/3

caps_update(From, To, Features) -> any()

code_change/3

code_change(OldVsn, State, Extra) -> any()

collection_shim/1 *

collection_shim(Node) -> any()

command_disco_info/3 *

command_disco_info(Host, NodeId, From) -> any()

create_node/5

create_node(Host::host(), ServerHost::host(), Node::pubsubNode(), Owner::jid(), NodeType::nodeType()) -> {error, Reason::stanzaError()} | {result, []}

Create new pubsub nodes

In addition to method-specific error conditions, there are several general reasons why the node creation request might fail:

ote: node creation is a particular case, error return code is evaluated at many places:

create_node/7 *

create_node(Host, ServerHost, Node, Owner, Type, Access, Configuration) -> any()

delete_item/4

delete_item(Host::host(), JID::jid(), Node::pubsubNode(), ItemId::string()) -> {error, Reason::stanzaError()} | {result, []}

Delete item from a PubSub node.

The permission to delete an item must be verified by the plugin implementation.

There are several reasons why the item retraction request might fail:

delete_item/5 *

delete_item(Host, Node, Publisher, ItemId, ForceNotify) -> any()

delete_node/3

delete_node(Host, Node, Owner) -> {error, Reason} | {result, []}

Delete specified node and all childs.

There are several reasons why the node deletion request might fail:

disco_features/3 *

disco_features(Host, NodeId, From) -> any()

disco_identity/3 *

disco_identity(Host, NodeId, From) -> any()

disco_items/3 *

disco_items(Jid, NodeId, From) -> any()

disco_local_features/5

disco_local_features(Acc, From, Jid, NodeId, Lang) -> any()

disco_local_identity/5

disco_local_identity(Acc, From, Jid, NodeId, Lang) -> any()

disco_local_items/5

disco_local_items(Acc, From, To, Node, Lang) -> any()

disco_sm_features/5

disco_sm_features(Acc, From, To, NodeId, Lang) -> any()

disco_sm_identity/5

disco_sm_identity(Acc, From, To, NodeId, Lang) -> any()

disco_sm_items/5

disco_sm_items(Acc, From, To, NodeId, Lang) -> any()

do_route/7 *

do_route(ServerHost, Access, Plugins, Host, From, To, Xmlel) -> any()

escape/1

escape(JID) -> any()

event_stanza/1 *

event_stanza(Els) -> stanza()

Build pubsub event stanza

event_stanza/2 *

event_stanza(Event, EvAttr) -> any()

event_stanza/3 *

event_stanza(Event, EvAttr, Entries) -> any()

event_stanza/5 *

event_stanza(Event, EvAttr, Entry, EnAttr, Payload) -> any()

event_stanza/6 *

event_stanza(Event, EvAttr, Entry, EnAttr, Payload, Publisher) -> any()

event_stanza_with_delay/3 *

event_stanza_with_delay(Els, ModifNow, X3) -> any()

event_stanza_withmoreels/2 *

event_stanza_withmoreels(Els, MoreEls) -> any()

extended_error/2

extended_error(Error, Ext) -> any()

extended_error/3

extended_error(Error, Ext, Feature) -> any()

extended_headers/1 *

extended_headers(JIDs) -> any()

features/0 *

features() -> any()

features/1 *

features(Type) -> any()

features/2 *

features(Host, NodeId) -> any()

find_authorization_response/1 *

find_authorization_response(Packet) -> any()

get_affiliations/3 *

get_affiliations(Host, JID, Plugins) -> {error, Reason} | {result, Response}

Return the list of affiliations as an XMPP response.

get_allowed_items_call/6 *

get_allowed_items_call(Host, NodeIdx, From, Type, Options, Owners) -> any()

get_allowed_items_call/7 *

get_allowed_items_call(Host, NodeIdx, From, Type, Options, Owners, RSM) -> any()

get_cached_item/2

get_cached_item(Host, NodeId) -> any()

get_configure/5

get_configure(Host, ServerHost, Node, Jid, Lang) -> any()

get_configure_xfields/4 *

get_configure_xfields(Type, Options, Lang, Groups) -> any()

get_default/4 *

get_default(Host, Node, From, Lang) -> any()

get_item/3

get_item(Host, NodeId, ItemId) -> any()

get_items/2

get_items(Host, NodeId) -> any()

get_items/7 *

get_items(Host, Node, From, SubId, SMaxItems, ItemIds, Rsm) -> any()

Return the items of a given node.

The number of items to return is limited by MaxItems.

The permission are not checked in this function.

To do

get_max_items_node/1 *

get_max_items_node(Host) -> any()

get_option/2 *

get_option(Options, Key) -> any()

get_option/3 *

get_option(Options, Key, Default) -> any()

get_options/5 *

get_options(Host, Node, JID, SubId, Lang) -> any()

get_options_helper/6 *

get_options_helper(JID, Lang, Node, NodeId, SubId, Type) -> any()

get_pending_nodes/3 *

get_pending_nodes(Host, Owner, Plugins) -> any()

get_presence_and_roster_permissions/5 *

get_presence_and_roster_permissions(Host, From, Owners, AccessModel, AllowedGroups) -> any()

get_resource_state/3 *

get_resource_state(X1, ShowValues, JIDs) -> any()

get_roster_info/4 *

get_roster_info(OwnerUser, OwnerServer, JID, AllowedGroups) -> any()

get_subscriptions/3 *

get_subscriptions(Host, Node, JID) -> any()

get_subscriptions/4 *

get_subscriptions(Host, Node, JID, Plugins) -> {error, Reason} | {result, Response}

Return the list of subscriptions as an XMPP response.

handle_authorization_response/5 *

handle_authorization_response(Host, From, To, Packet, XFields) -> any()

handle_call/3

handle_call(X1, From, State) -> any()

handle_cast/2

handle_cast(Msg, State) -> any()

handle_info/2

handle_info(Info, State) -> any()

host/1 *

host(ServerHost) -> any()

in_subscription/6

in_subscription(X1, User, Server, Owner, X5, X6) -> any()

init/1

init(X1) -> any()

init_nodes/4 *

init_nodes(Host, ServerHost, NodeTree, Plugins) -> any()

init_plugins/3 *

init_plugins(Host, ServerHost, Opts) -> Plugins

Call the init/1 function for each plugin declared in the config file. The default plugin module is implicit.

The Erlang code for the plugin is located in a module called node_plugin. The 'node_' prefix is mandatory.

The modules are initialized in alphetical order and the list is checked and sorted to ensure that each module is initialized only once.

See node_flat:init/1 for an example implementation.

init_send_loop/2 *

init_send_loop(ServerHost, State) -> any()

iq_command/6 *

iq_command(Host, ServerHost, From, IQ, Access, Plugins) -> any()

iq_disco_info/4 *

iq_disco_info(Host, NodeId, From, Lang) -> any()

iq_disco_items/4 *

iq_disco_items(Host, NodeId, From, Rsm) -> any()

iq_get_vcard/1 *

iq_get_vcard(Lang) -> any()

iq_pubsub/6 *

iq_pubsub(Host, ServerHost, From, IQType, SubEl, Lang) -> any()

iq_pubsub/8 *

iq_pubsub(Host, ServerHost, From, IQType, Xmlel, Lang, Access, Plugins) -> any()

iq_pubsub_owner/6 *

iq_pubsub_owner(Host, ServerHost, From, IQType, Xmlel, Lang) -> any()

iq_sm/3

iq_sm(From, Jid, Iq) -> any()

is_last_item_cache_enabled/1 *

is_last_item_cache_enabled(Host) -> any()

is_to_deliver/5 *

is_to_deliver(LJID, NotifyType, Depth, NodeOptions, SubOptions) -> boolean()

Check if a notification must be delivered or not based on node and subscription options.

itemAttr/1 *

itemAttr(ItemId) -> any()

itemsEls/1 *

itemsEls(PubsubItems) -> any()

max_items/2 *

max_items(Host, Options) -> MaxItems

Return the maximum number of items for a given node.

Unlimited means that there is no limit in the number of items that can be stored.

To do

nodeAttr/1 *

nodeAttr(Node) -> any()

node_action/4

node_action(Host, Type, Function, Args) -> any()

node_call/3 *

node_call(Type, Function, Args) -> any()

node plugin call.

node_disco_info/3 *

node_disco_info(Host, NodeId, From) -> any()

node_options/1 *

node_options(Type) -> any()

node_owners/3 *

node_owners(Host, Type, NodeId) -> [ljid()]

Return list of node owners.

node_owners_call/2 *

node_owners_call(Type, NodeId) -> any()

node_subscriptions/6 *

node_subscriptions(Host, Node, NodeId, Type, NodeOptions, Notify) -> any()

node_subscriptions_bare/4 *

node_subscriptions_bare(Host, Node, NodeId, Type) -> any()

node_subscriptions_full/3 *

node_subscriptions_full(Host, Node, NotifyType) -> any()

node_to_deliver/2 *

node_to_deliver(LJID, NodeOptions) -> any()

node_to_string/1

node_to_string(Node) -> NodeStr

Convert a node type from pubsubNode to string.

notify_owners/6 *

notify_owners(X1, JID, Host, Node, Owners, State) -> any()

odbc_conn/1 *

odbc_conn(Host) -> any()

on_user_offline/3

on_user_offline(X1, JID, X3) -> any()

out_subscription/4

out_subscription(User, Server, JID, X4) -> any()

payload_els_ns/1 *

payload_els_ns(Payload) -> int()

Count occurence of XML elements in payload.

payload_els_ns/3 *

payload_els_ns(Tail, Count, NS) -> any()

plugins/1 *

plugins(Host) -> any()

presence/2 *

presence(ServerHost, Presence) -> any()

presence_can_deliver/2 *

presence_can_deliver(X1, X2) -> any()

presence_probe/3

presence_probe(Jid, JID, Pid) -> any()

publish_item/6

publish_item(Host::host(), ServerHost::host(), JID::jid(), Node::pubsubNode(), ItemId::string(), Payload::term()) -> {error, Reason::stanzaError()} | {result, []}

Publish item to a PubSub node.

The permission to publish an item must be verified by the plugin implementation.

There are several reasons why the publish request might fail:

purge_node/3 *

purge_node(Host, Node::JID, Owner::Node) -> {error, Reason} | {result, []}

Delete all items of specified node owned by JID.

There are several reasons why the node purge request might fail:

purge_offline/1 *

purge_offline(LJID) -> any()

read_sub/5 *

read_sub(Subscriber, Node, NodeId, SubId, Lang) -> any()

remove_user/2

remove_user(UserB, ServerB) -> any()

select_type/3 *

select_type(ServerHost, Host, NodeId) -> any()

select_type/4 *

select_type(ServerHost, Host, NodeId, Type) -> any()

send_authorization_approval/4 *

send_authorization_approval(Host, JID, SNode::Node, Subscription) -> void

Send a message to JID with the supplied Subscription

send_authorization_request/2 *

send_authorization_request(Pubsub_node, Subscriber) -> any()

send_items/6

send_items(Host, Node, NodeId, Type, LJID, Number) -> any()

Resend the items of a node to the user.

To do

send_loop/1

send_loop(State) -> any()

send_pending_auth_events/3 *

send_pending_auth_events(Host, Node, Owner) -> iqRes()

Send a subscription approval form to Owner for all pending subscriptions on Host and Node.

send_pending_node_form/4 *

send_pending_node_form(Host, Owner, Lang, Plugins) -> iqRes()

Sends the process pending subscriptions XForm for Host to Owner.

service_jid/1 *

service_jid(Host) -> jid()

Generate pubsub service JID.

set_affiliations/4 *

set_affiliations(Host, Node, From, EntitiesEls) -> any()

set_cached_item/5 *

set_cached_item(Host, NodeId, ItemId, Publisher, Payload) -> any()

set_configure/5

set_configure(Host, Node, From, Els, Lang) -> any()

set_options/5 *

set_options(Host, Node, JID, SubId, Configuration) -> any()

set_options_helper/5 *

set_options_helper(Configuration, JID, NodeId, SubId, Type) -> any()

set_subscriptions/4 *

set_subscriptions(Host, Node, From, EntitiesEls) -> any()

set_xoption/3 *

set_xoption(Host, Opts, NewOpts) -> any()

start/2

start(Host, Opts) -> any()

start_link/2

start_link(Host, Opts) -> any()

state_can_deliver/2 *

state_can_deliver(X1, SubOptions) -> any()

stop/1

stop(Host) -> any()

string_to_affiliation/1

string_to_affiliation(X1::AffiliationStr) -> Affiliation

Convert an affiliation type from string to atom.

string_to_node/1

string_to_node(SNode) -> any()

string_to_subscription/1

string_to_subscription(X1::SubscriptionStr) -> Subscription

Convert a subscription type from string to atom.

sub_option_can_deliver/3 *

sub_option_can_deliver(X1, Depth, X3) -> any()

sub_to_deliver/4 *

sub_to_deliver(LJID, NotifyType, Depth, SubOptions) -> any()

sub_with_options/1 *

sub_with_options(Pubsub_node) -> any()

sub_with_options/3 *

sub_with_options(JID, NodeId, SubId) -> any()

subid_shim/1 *

subid_shim(SubIds) -> any()

subscribe_node/5

subscribe_node(Host, Node, From, JID, Configuration) -> {error, Reason::stanzaError()} | {result, []}

Accepts or rejects subcription requests on a PubSub node.

There are several reasons why the subscription request might fail:

See also: node_flat:subscribe_node/5.

subscribed_nodes_by_jid/2 *

subscribed_nodes_by_jid(NotifyType, SubsByDepth) -> any()

subscription_to_string/1

subscription_to_string(X1::Subscription) -> SubscriptionStr

Convert a subscription type from atom to string.

terminate/2

terminate(Reason, State) -> any()

terminate_plugins/4 *

terminate_plugins(Host, ServerHost, Plugins, TreePlugin) -> any()

transaction/3 *

transaction(Host, Fun, Trans) -> any()

transaction/4 *

transaction(Host, NodeId, Action, Trans) -> any()

plugin transaction handling.

transaction_on_nodes/3 *

transaction_on_nodes(Host, Action, Trans) -> any()

transaction_retry/4 *

transaction_retry(Host, Fun, Trans, Count) -> any()

tree_action/3

tree_action(Host, Function, Args) -> any()

tree_call/3 *

tree_call(Host, Function, Args) -> any()

node tree plugin call.

uniqid/0 *

uniqid() -> any()

unset_cached_item/2 *

unset_cached_item(Host, NodeId) -> any()

unsubscribe_node/5

unsubscribe_node(Host, Node::Noce, From, JID, SubId) -> {error, Reason} | {result, []}

Unsubscribe JID from the Node.

There are several reasons why the unsubscribe request might fail:

unsubscribe_user/2 *

unsubscribe_user(Entity, Owner) -> any()

update_auth/7 *

update_auth(Host, Node, Type, Nidx, Subscriber, Allow, Subscriptions) -> any()

user_resource/3 *

user_resource(User, Server, Resource) -> any()

user_resources/2 *

user_resources(User, Server) -> any()

write_sub/4 *

write_sub(Subscriber, NodeId, SubId, Options) -> any()


Generated by EDoc, May 23 2012, 07:15:13.