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;