Software /
code /
prosody
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 |