Mercurial > prosody-hg
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 |
| parents | e5d00bf4a4d5 |
| children | 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; |
