Mercurial > prosody-hg
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 |
| parents | 9baac001fccb |
| children | 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 |
