Comparison

util/pubsub.lua @ 5312:fdcd2ac7c22d

mod_pubsub, util.pubsub: Don't send purge notifications in an <items/> element
author Florian Zeitz <florob@babelmonkeys.de>
date Fri, 25 Jan 2013 01:32:14 +0100
parent 5305:391b72fede9f
child 5315:abf1a926d0da
comparison
equal deleted inserted replaced
5311:86fe6e2fa5ae 5312:fdcd2ac7c22d
243 end 243 end
244 node_obj = self.nodes[node]; 244 node_obj = self.nodes[node];
245 end 245 end
246 node_obj.data[id] = item; 246 node_obj.data[id] = item;
247 self.events.fire_event("item-published", { node = node, actor = actor, id = id, item = item }); 247 self.events.fire_event("item-published", { node = node, actor = actor, id = id, item = item });
248 self.config.broadcaster(node, node_obj.subscribers, item); 248 self.config.broadcaster("items", node, node_obj.subscribers, item);
249 return true; 249 return true;
250 end 250 end
251 251
252 function service:retract(node, actor, id, retract) 252 function service:retract(node, actor, id, retract)
253 -- Access checking 253 -- Access checking
257 -- 257 --
258 local node_obj = self.nodes[node]; 258 local node_obj = self.nodes[node];
259 if (not node_obj) or (not node_obj.data[id]) then 259 if (not node_obj) or (not node_obj.data[id]) then
260 return false, "item-not-found"; 260 return false, "item-not-found";
261 end 261 end
262 if id then 262 node_obj.data[id] = nil;
263 node_obj.data[id] = nil;
264 else
265 node_obj.data = {}; -- Purge
266 end
267 if retract then 263 if retract then
268 self.config.broadcaster(node, node_obj.subscribers, retract); 264 self.config.broadcaster("items", node, node_obj.subscribers, retract);
269 end 265 end
270 return true 266 return true
271 end 267 end
272 268
273 function service:purge(node, actor, purge) 269 function service:purge(node, actor, notify)
274 return self:retract(node, actor, nil, purge); 270 -- Access checking
271 if not self:may(node, actor, "retract") then
272 return false, "forbidden";
273 end
274 --
275 local node_obj = self.nodes[node];
276 if not node_obj then
277 return false, "item-not-found";
278 end
279 node_obj.data = {}; -- Purge
280 if notify then
281 self.config.broadcaster("purge", node, node_obj.subscribers);
282 end
283 return true
275 end 284 end
276 285
277 function service:get_items(node, actor, id) 286 function service:get_items(node, actor, id)
278 -- Access checking 287 -- Access checking
279 if not self:may(node, actor, "get_items") then 288 if not self:may(node, actor, "get_items") then