diff options
author | Kim Alvefur <zash@zash.se> | 2016-10-16 00:36:05 +0200 |
---|---|---|
committer | Kim Alvefur <zash@zash.se> | 2016-10-16 00:36:05 +0200 |
commit | 176661cc07459d4fc656e711b7c85c3f1703a1d0 (patch) | |
tree | 494335cc106313ce4f53ec9a5b85a0933bf0b0aa /util/pubsub.lua | |
parent | 3dc53e988698330bc05a1be1ab90e4527e86a3ed (diff) | |
download | prosody-176661cc07459d4fc656e711b7c85c3f1703a1d0.tar.gz prosody-176661cc07459d4fc656e711b7c85c3f1703a1d0.zip |
util.pubsub: Factor item storage cache into a per service configurable option
Diffstat (limited to 'util/pubsub.lua')
-rw-r--r-- | util/pubsub.lua | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/util/pubsub.lua b/util/pubsub.lua index b5cfdb6e..520d80a7 100644 --- a/util/pubsub.lua +++ b/util/pubsub.lua @@ -5,6 +5,7 @@ local service = {}; local service_mt = { __index = service }; local default_config = { __index = { + itemstore = function (config) return cache.new(tonumber(config["pubsub#max_items"])) end; broadcaster = function () end; get_affiliation = function () end; capabilities = {}; @@ -222,7 +223,7 @@ function service:create(node, actor, options) config = setmetatable(options or {}, {__index=self.node_defaults}); affiliations = {}; }; - self.data[node] = cache.new(self.nodes[node].config["pubsub#max_items"]); + self.data[node] = self.config.itemstore(self.nodes[node].config); self.events.fire_event("node-created", { node = node, actor = actor }); local ok, err = self:set_affiliation(node, true, actor, "owner"); if not ok then @@ -307,7 +308,7 @@ function service:purge(node, actor, notify) if not node_obj then return false, "item-not-found"; end - self.data[node] = cache.new(node_obj.config["pubsub#max_items"]); -- Purge + self.data[node] = self.config.itemstore(self.nodes[node].config); self.events.fire_event("node-purged", { node = node, actor = actor }); if notify then self.config.broadcaster("purge", node, node_obj.subscribers); @@ -422,7 +423,7 @@ function service:set_node_config(node, actor, new_config) for k,v in pairs(new_config) do node_obj.config[k] = v; end - local new_data = cache.new(node_obj.config["pubsub#max_items"]); + local new_data = self.config.itemstore(self.nodes[node].config); for key, value in self.data[node]:items() do new_data:set(key, value); end |