Software /
code /
prosody
Comparison
util/pubsub.lua @ 8401:f1923a79c93d
util.pubsub: Recreate itemstore if persist_items changes or resize it if max_items changes
author | Kim Alvefur <zash@zash.se> |
---|---|
date | Thu, 09 Nov 2017 17:19:11 +0100 |
parent | 8382:e5d00bf4a4d5 |
child | 8500:9bf00d0734c8 |
comparison
equal
deleted
inserted
replaced
8400:518b56d806bd | 8401:f1923a79c93d |
---|---|
429 local node_obj = self.nodes[node]; | 429 local node_obj = self.nodes[node]; |
430 if not node_obj then | 430 if not node_obj then |
431 return false, "item-not-found"; | 431 return false, "item-not-found"; |
432 end | 432 end |
433 | 433 |
434 for k,v in pairs(new_config) do | 434 if new_config["persist_items"] ~= node_obj.config["persist_items"] then |
435 node_obj.config[k] = v; | 435 self.data[node] = self.config.itemstore(self.nodes[node].config, node); |
436 end | 436 elseif new_config["max_items"] ~= node_obj.config["max_items"] then |
437 local new_data = self.config.itemstore(self.nodes[node].config, node); | 437 self.data[node]:resize(new_config["max_items"]); |
438 for key, value in self.data[node]:items() do | 438 end |
439 new_data:set(key, value); | 439 |
440 end | 440 node_obj.config = setmetatable(new_config, {__index=self.node_defaults}); |
441 self.data[node] = new_data; | 441 |
442 return true; | 442 return true; |
443 end | 443 end |
444 | 444 |
445 return { | 445 return { |
446 new = new; | 446 new = new; |