Comparison

util/pubsub.lua @ 5851:cdcfd93e2f43

mod_pubsub, util.pubsub: Keep track of the order of items
author Kim Alvefur <zash@zash.se>
date Fri, 04 Oct 2013 16:40:27 +0200
parent 5776:bd0ff8ae98a8
child 5973:905b4fd863b4
comparison
equal deleted inserted replaced
5850:e8c743f4213f 5851:cdcfd93e2f43
256 if not ok then 256 if not ok then
257 return ok, err; 257 return ok, err;
258 end 258 end
259 node_obj = self.nodes[node]; 259 node_obj = self.nodes[node];
260 end 260 end
261 node_obj.data[#node_obj.data + 1] = id;
261 node_obj.data[id] = item; 262 node_obj.data[id] = item;
262 self.events.fire_event("item-published", { node = node, actor = actor, id = id, item = item }); 263 self.events.fire_event("item-published", { node = node, actor = actor, id = id, item = item });
263 self.config.broadcaster("items", node, node_obj.subscribers, item); 264 self.config.broadcaster("items", node, node_obj.subscribers, item);
264 return true; 265 return true;
265 end 266 end
273 local node_obj = self.nodes[node]; 274 local node_obj = self.nodes[node];
274 if (not node_obj) or (not node_obj.data[id]) then 275 if (not node_obj) or (not node_obj.data[id]) then
275 return false, "item-not-found"; 276 return false, "item-not-found";
276 end 277 end
277 node_obj.data[id] = nil; 278 node_obj.data[id] = nil;
279 for i, _id in ipairs(node_obj.data) do
280 if id == _id then
281 table.remove(node_obj, i);
282 break;
283 end
284 end
278 if retract then 285 if retract then
279 self.config.broadcaster("items", node, node_obj.subscribers, retract); 286 self.config.broadcaster("items", node, node_obj.subscribers, retract);
280 end 287 end
281 return true 288 return true
282 end 289 end
307 local node_obj = self.nodes[node]; 314 local node_obj = self.nodes[node];
308 if not node_obj then 315 if not node_obj then
309 return false, "item-not-found"; 316 return false, "item-not-found";
310 end 317 end
311 if id then -- Restrict results to a single specific item 318 if id then -- Restrict results to a single specific item
312 return true, { [id] = node_obj.data[id] }; 319 return true, { id, [id] = node_obj.data[id] };
313 else 320 else
314 return true, node_obj.data; 321 return true, node_obj.data;
315 end 322 end
316 end 323 end
317 324