diff options
author | Christian Pointner <equinox@spreadspace.org> | 2010-12-26 16:26:21 +0000 |
---|---|---|
committer | Christian Pointner <equinox@spreadspace.org> | 2010-12-26 16:26:21 +0000 |
commit | 6f3323caeda4c74d60101d029a34a2dab95ed97e (patch) | |
tree | b548fc4224417e56ca669f37d53032e35cedf87d | |
parent | removed crapy require from module loader (diff) |
max instances gets checked now
git-svn-id: https://svn.spreadspace.org/gcsd/trunk@73 ac14a137-c7f1-4531-abe0-07747231d213
-rw-r--r-- | TODO | 1 | ||||
-rw-r--r-- | src/module_list.lua | 19 |
2 files changed, 17 insertions, 3 deletions
@@ -5,7 +5,6 @@ * improve module loader (configurable path) * module API etc. clean-up, finalize, freeze * config-parser - * check max instances at modules (instance counter) * add modules - tcp - udp diff --git a/src/module_list.lua b/src/module_list.lua index 5ddb845..706c9c0 100644 --- a/src/module_list.lua +++ b/src/module_list.lua @@ -57,6 +57,21 @@ setmetatable(module_list.classes, mt) module_list.inputs = {} module_list.output = nil +function module_list:new_instance(class_name, config, runtype) + class = self.classes[class_name] + if(class.__num_inst) then + if(class.properties.max_instances >= 1 and + class.__num_inst >= class.properties.max_instances) then + error("max instances of " .. class_name .. " reached"); + end + class.__num_inst = class.__num_inst + 1 + else + class.__num_inst = 1 + end + + return class:new(config, runtype) +end + function module_list:init(opt) local class, config = self:parse_config(opt.cmd_out) if(not class) then return defines.KILL_DAEMON end @@ -69,7 +84,7 @@ function module_list:init(opt) for k, v in pairs(config) do log.printf(log.DEBUG, " config['%s'] = '%s'", k, v) end - self.output = self.classes[class]:new(config, defines.OUT_MODULE) + self.output = self:new_instance(class, config, defines.OUT_MODULE) for idx, input in ipairs(opt.cmd_ins) do local class, config = self:parse_config(input) @@ -85,7 +100,7 @@ function module_list:init(opt) for k, v in pairs(config) do log.printf(log.DEBUG, " config['%s'] = '%s'", k, v) end - table.insert(self.inputs, self.classes[class]:new(config, defines.IN_MODULE)) + table.insert(self.inputs, self:new_instance(class, config, defines.IN_MODULE)) end return defines.OK |