Comparison

core/modulemanager.lua @ 569:5216efe6088b

Add hostmanager, and eventmanager
author Matthew Wild <mwild1@gmail.com>
date Sat, 06 Dec 2008 03:41:49 +0000
parent 540:ec03f6968fa8
child 573:f6555ebf84ec
comparison
equal deleted inserted replaced
568:b2464849c1b0 569:5216efe6088b
22 local plugin_dir = CFG_PLUGINDIR or "./plugins/"; 22 local plugin_dir = CFG_PLUGINDIR or "./plugins/";
23 23
24 local logger = require "util.logger"; 24 local logger = require "util.logger";
25 local log = logger.init("modulemanager"); 25 local log = logger.init("modulemanager");
26 local addDiscoInfoHandler = require "core.discomanager".addDiscoInfoHandler; 26 local addDiscoInfoHandler = require "core.discomanager".addDiscoInfoHandler;
27 local eventmanager = require "core.eventmanager";
28
27 29
28 local loadfile, pcall = loadfile, pcall; 30 local loadfile, pcall = loadfile, pcall;
29 local setmetatable, setfenv, getfenv = setmetatable, setfenv, getfenv; 31 local setmetatable, setfenv, getfenv = setmetatable, setfenv, getfenv;
30 local pairs, ipairs = pairs, ipairs; 32 local pairs, ipairs = pairs, ipairs;
31 local t_insert = table.insert; 33 local t_insert = table.insert;
180 return true; 182 return true;
181 end 183 end
182 end); 184 end);
183 end 185 end
184 186
185 187 api.add_event_hook = eventmanager.add_event_hook;
186 do
187 local event_handlers = {};
188
189 function api:add_event_hook(name, handler)
190 if not event_handlers[name] then
191 event_handlers[name] = {};
192 end
193 t_insert(event_handlers[name] , handler);
194 self:log("debug", "Subscribed to %s", name);
195 end
196
197 function fire_event(name, ...)
198 local event_handlers = event_handlers[name];
199 if event_handlers then
200 for name, handler in ipairs(event_handlers) do
201 handler(...);
202 end
203 end
204 end
205 end
206
207 188
208 local function _add_handler(module, origin_type, tag, xmlns, handler) 189 local function _add_handler(module, origin_type, tag, xmlns, handler)
209 local handlers = stanza_handlers[module.host]; 190 local handlers = stanza_handlers[module.host];
210 handlers[origin_type] = handlers[origin_type] or {}; 191 handlers[origin_type] = handlers[origin_type] or {};
211 if not handlers[origin_type][tag] then 192 if not handlers[origin_type][tag] then