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 /src | |
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
Diffstat (limited to 'src')
-rw-r--r-- | src/module_list.lua | 19 |
1 files changed, 17 insertions, 2 deletions
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 |