summaryrefslogtreecommitdiff
path: root/src/mod_pubsub/nodetree_virtual.erl
diff options
context:
space:
mode:
authorChristophe Romain <christophe.romain@process-one.net>2009-04-30 05:18:06 +0000
committerChristophe Romain <christophe.romain@process-one.net>2009-04-30 05:18:06 +0000
commitf8780bc6ee15e738807531df2489173b7da19561 (patch)
tree0f03e2da5cdc312336716464125cf702101ebf97 /src/mod_pubsub/nodetree_virtual.erl
parent* src/ejabberd_hooks.erl: Support distributed hooks (EJAB-829) (diff)
PubSub/PEP API change for major optimization
SVN Revision: 2048
Diffstat (limited to 'src/mod_pubsub/nodetree_virtual.erl')
-rw-r--r--src/mod_pubsub/nodetree_virtual.erl25
1 files changed, 14 insertions, 11 deletions
diff --git a/src/mod_pubsub/nodetree_virtual.erl b/src/mod_pubsub/nodetree_virtual.erl
index dcfd9e5e..6913b6e4 100644
--- a/src/mod_pubsub/nodetree_virtual.erl
+++ b/src/mod_pubsub/nodetree_virtual.erl
@@ -48,7 +48,7 @@
get_nodes/2,
get_nodes/1,
get_subnodes/3,
- get_subnodes_tree/2,
+ get_subnodes_tree/3,
create_node/5,
delete_node/2
]).
@@ -94,14 +94,13 @@ get_node(Host, Node, _From) ->
get_node(Host, Node) ->
#pubsub_node{nodeid = {Host, Node}}.
-get_nodes(Key, _From) ->
- get_nodes(Key).
-
-%% @spec (Key) -> [pubsubNode()]
+%% @spec (Host) -> [pubsubNode()]
%% Host = mod_pubsub:host() | mod_pubsub:jid()
%% @doc <p>Virtual node tree does not handle a node database. Any node is considered
%% as existing. Nodes list can not be determined.</p>
-get_nodes(_Key) ->
+get_nodes(Host, _From) ->
+ get_nodes(Host).
+get_nodes(_Host) ->
[].
%% @spec (Host, Node, From) -> [pubsubNode()]
@@ -109,13 +108,17 @@ get_nodes(_Key) ->
%% Node = mod_pubsub:pubsubNode()
%% From = mod_pubsub:jid()
%% @doc <p>Virtual node tree does not handle parent/child. Child list is empty.</p>
-get_subnodes(_Host, _Node, _From) ->
+get_subnodes(Host, Node, _From) ->
+ get_subnodes(Host, Node).
+get_subnodes(_Host, _Node) ->
[].
%% @spec (Host, Index) -> [pubsubNode()]
%% Host = mod_pubsub:host()
%% Node = mod_pubsub:pubsubNode()
%% @doc <p>Virtual node tree does not handle parent/child. Child list is empty.</p>
+get_subnodes_tree(Host, Node, _From) ->
+ get_subnodes_tree(Host, Node).
get_subnodes_tree(_Host, _Node) ->
[].
@@ -128,11 +131,11 @@ get_subnodes_tree(_Host, _Node) ->
%% @doc <p>No node record is stored on database. Any valid node
%% is considered as already created.</p>
%% <p>default allowed nodes: /home/host/user/any/node/name</p>
-create_node(_Host, Node, _Type, Owner, _Options) ->
+create_node(Host, Node, _Type, Owner, _Options) ->
UserName = Owner#jid.luser,
UserHost = Owner#jid.lserver,
case Node of
- ["home", UserHost, UserName | _] -> {error, ?ERR_CONFLICT};
+ ["home", UserHost, UserName | _] -> {error, {virtual, {Host, Node}}};
_ -> {error, ?ERR_NOT_ALLOWED}
end.
@@ -141,5 +144,5 @@ create_node(_Host, Node, _Type, Owner, _Options) ->
%% Node = mod_pubsub:pubsubNode()
%% @doc <p>Virtual node tree does not handle parent/child.
%% node deletion just affects the corresponding node.</p>
-delete_node(_Host, Node) ->
- [Node].
+delete_node(Host, Node) ->
+ [get_node(Host, Node)].