Software /
code /
prosody
Comparison
util/pubsub.lua @ 8500:9bf00d0734c8
util.pubsub: For clarity, split config tables from their metatables
author | Matthew Wild <mwild1@gmail.com> |
---|---|
date | Thu, 01 Feb 2018 15:09:04 +0000 |
parent | 8401:f1923a79c93d |
child | 8501:8d9e2c2095dd |
comparison
equal
deleted
inserted
replaced
8499:549361c68f5a | 8500:9bf00d0734c8 |
---|---|
2 local cache = require "util.cache"; | 2 local cache = require "util.cache"; |
3 | 3 |
4 local service = {}; | 4 local service = {}; |
5 local service_mt = { __index = service }; | 5 local service_mt = { __index = service }; |
6 | 6 |
7 local default_config = { __index = { | 7 local default_config = { |
8 itemstore = function (config, _) return cache.new(config["max_items"]) end; | 8 itemstore = function (config, _) return cache.new(config["max_items"]) end; |
9 broadcaster = function () end; | 9 broadcaster = function () end; |
10 get_affiliation = function () end; | 10 get_affiliation = function () end; |
11 capabilities = {}; | 11 capabilities = {}; |
12 } }; | 12 }; |
13 local default_node_config = { __index = { | 13 local default_config_mt = { __index = default_config }; |
14 | |
15 local default_node_config = { | |
14 ["persist_items"] = false; | 16 ["persist_items"] = false; |
15 ["max_items"] = 20; | 17 ["max_items"] = 20; |
16 } }; | 18 }; |
19 local default_node_config_mt = { __index = default_node_config }; | |
17 | 20 |
18 local function new(config) | 21 local function new(config) |
19 config = config or {}; | 22 config = config or {}; |
20 return setmetatable({ | 23 return setmetatable({ |
21 config = setmetatable(config, default_config); | 24 config = setmetatable(config, default_config_mt); |
22 node_defaults = setmetatable(config.node_defaults or {}, default_node_config); | 25 node_defaults = setmetatable(config.node_defaults or {}, default_node_config_mt); |
23 affiliations = {}; | 26 affiliations = {}; |
24 subscriptions = {}; | 27 subscriptions = {}; |
25 nodes = {}; | 28 nodes = {}; |
26 data = {}; | 29 data = {}; |
27 events = events.new(); | 30 events = events.new(); |