Software /
code /
prosody
Comparison
core/modulemanager.lua @ 3538:3ea38f44420c
modulemanager: Removed another legacy events API (add_event_hook), and related code.
author | Waqas Hussain <waqas20@gmail.com> |
---|---|
date | Sat, 16 Oct 2010 08:15:11 +0500 |
parent | 3536:fab65a4692ac |
child | 3539:8bbd965267b2 |
comparison
equal
deleted
inserted
replaced
3537:7bbb19804d82 | 3538:3ea38f44420c |
---|---|
51 | 51 |
52 local modulemap = { ["*"] = {} }; | 52 local modulemap = { ["*"] = {} }; |
53 | 53 |
54 local modulehelpers = setmetatable({}, { __index = _G }); | 54 local modulehelpers = setmetatable({}, { __index = _G }); |
55 | 55 |
56 local hooked = multitable_new(); | |
57 local hooks = multitable_new(); | 56 local hooks = multitable_new(); |
58 local event_hooks = multitable_new(); | |
59 | 57 |
60 local NULL = {}; | 58 local NULL = {}; |
61 | 59 |
62 -- Load modules when a host is activated | 60 -- Load modules when a host is activated |
63 function load_modules_for_host(host) | 61 function load_modules_for_host(host) |
186 local ok, err = call_module_method(mod, "unload"); | 184 local ok, err = call_module_method(mod, "unload"); |
187 if (not ok) and err then | 185 if (not ok) and err then |
188 log("warn", "Non-fatal error unloading module '%s' on '%s': %s", name, host, err); | 186 log("warn", "Non-fatal error unloading module '%s' on '%s': %s", name, host, err); |
189 end | 187 end |
190 end | 188 end |
191 event_hooks:remove(host, name); | |
192 -- unhook event handlers hooked by module:hook | 189 -- unhook event handlers hooked by module:hook |
193 for event, handlers in pairs(hooks:get(host, name) or NULL) do | 190 for event, handlers in pairs(hooks:get(host, name) or NULL) do |
194 for handler in pairs(handlers or NULL) do | 191 for handler in pairs(handlers or NULL) do |
195 (hosts[host] or prosody).events.remove_handler(event, handler); | 192 (hosts[host] or prosody).events.remove_handler(event, handler); |
196 end | 193 end |
317 end | 314 end |
318 function api:add_identity(category, type, name) | 315 function api:add_identity(category, type, name) |
319 self:add_item("identity", {category = category, type = type, name = name}); | 316 self:add_item("identity", {category = category, type = type, name = name}); |
320 end | 317 end |
321 | 318 |
322 local event_hook = function(host, mod_name, event_name, ...) | |
323 if type((...)) == "table" and (...).host and (...).host ~= host then return; end | |
324 for handler in pairs(event_hooks:get(host, mod_name, event_name) or NULL) do | |
325 handler(...); | |
326 end | |
327 end; | |
328 function api:add_event_hook(name, handler) | |
329 if not hooked:get(self.host, self.name, name) then | |
330 prosody_events.add_handler(name, function(...) event_hook(self.host, self.name, name, ...); end); | |
331 hooked:set(self.host, self.name, name, true); | |
332 end | |
333 event_hooks:set(self.host, self.name, name, handler, true); | |
334 end | |
335 | |
336 function api:fire_event(...) | 319 function api:fire_event(...) |
337 return (hosts[self.host] or prosody).events.fire_event(...); | 320 return (hosts[self.host] or prosody).events.fire_event(...); |
338 end | 321 end |
339 | 322 |
340 function api:hook(event, handler, priority) | 323 function api:hook(event, handler, priority) |