aboutsummaryrefslogtreecommitdiffstats
path: root/util/pubsub.lua
diff options
context:
space:
mode:
authorFlorian Zeitz <florob@babelmonkeys.de>2010-12-05 04:19:23 +0100
committerFlorian Zeitz <florob@babelmonkeys.de>2010-12-05 04:19:23 +0100
commit649c7432b75f0faea2e5e7ba7336138f98a8e001 (patch)
tree78b13c20b1654d2b0733176198eb6ec86e82ad78 /util/pubsub.lua
parent0e2b3ce46897f044dba8a262bb3a7cf848d624be (diff)
downloadprosody-649c7432b75f0faea2e5e7ba7336138f98a8e001.tar.gz
prosody-649c7432b75f0faea2e5e7ba7336138f98a8e001.zip
mod_pubsub: Support item retraction
Diffstat (limited to 'util/pubsub.lua')
-rw-r--r--util/pubsub.lua12
1 files changed, 12 insertions, 0 deletions
diff --git a/util/pubsub.lua b/util/pubsub.lua
index 4789dff9..02e845e1 100644
--- a/util/pubsub.lua
+++ b/util/pubsub.lua
@@ -54,6 +54,18 @@ function service:publish(node, actor, id, item)
return true;
end
+function service:retract(node, actor, id, retract)
+ local node_obj = self.nodes[node];
+ if (not node_obj) or (not node_obj.data[id]) then
+ return false, "item-not-found";
+ end
+ node_obj.data[id] = nil;
+ if retract then
+ self.cb.broadcaster(node, node_obj.subscribers, retract);
+ end
+ return true
+end
+
function service:get(node, actor, id)
local node_obj = self.nodes[node];
if node_obj then