Comparison

util/pubsub.lua @ 8952:15bb54f96dd1

util.pubsub: Remove node from persistent storage on deletion
author Kim Alvefur <zash@zash.se>
date Sun, 01 Jul 2018 04:46:37 +0200
parent 8951:9baac001fccb
child 8954:3b6095686498
comparison
equal deleted inserted replaced
8951:9baac001fccb 8952:15bb54f96dd1
32 name = node.name; 32 name = node.name;
33 config = node.config; 33 config = node.config;
34 subscribers = node.subscribers; 34 subscribers = node.subscribers;
35 affiliations = node.affiliations; 35 affiliations = node.affiliations;
36 }); 36 });
37 end
38
39 local function delete_node_in_store(service, node_name)
40 return service.config.nodestore:set(node_name, nil);
37 end 41 end
38 42
39 -- Create and return a new service object 43 -- Create and return a new service object
40 local function new(config) 44 local function new(config)
41 config = config or {}; 45 config = config or {};
288 self.nodes[node] = nil; 292 self.nodes[node] = nil;
289 if self.data[node] and self.data[node].clear then 293 if self.data[node] and self.data[node].clear then
290 self.data[node]:clear(); 294 self.data[node]:clear();
291 end 295 end
292 self.data[node] = nil; 296 self.data[node] = nil;
297
298 if self.config.nodestore then
299 local ok, err = delete_node_in_store(self, node);
300 if not ok then
301 self.nodes[node] = nil;
302 return ok, err;
303 end
304 end
305
293 self.events.fire_event("node-deleted", { node = node, actor = actor }); 306 self.events.fire_event("node-deleted", { node = node, actor = actor });
294 self.config.broadcaster("delete", node, node_obj.subscribers, nil, actor, node_obj, self); 307 self.config.broadcaster("delete", node, node_obj.subscribers, nil, actor, node_obj, self);
295 return true; 308 return true;
296 end 309 end
297 310