Software / code / prosody
Comparison
core/modulemanager.lua @ 591:980ded4c60ef
Removed unused variables
| author | Waqas Hussain <waqas20@gmail.com> |
|---|---|
| date | Sun, 07 Dec 2008 03:14:30 +0500 |
| parent | 590:54afe37cccbf |
| child | 592:c6e2c727d0cc |
comparison
equal
deleted
inserted
replaced
| 590:54afe37cccbf | 591:980ded4c60ef |
|---|---|
| 44 | 44 |
| 45 local api = {}; -- Module API container | 45 local api = {}; -- Module API container |
| 46 | 46 |
| 47 local modulemap = {}; | 47 local modulemap = {}; |
| 48 | 48 |
| 49 local m_handler_info = multitable_new(); | 49 local stanza_handlers = multitable_new(); |
| 50 local m_stanza_handlers = multitable_new(); | |
| 51 local handler_info = {}; | 50 local handler_info = {}; |
| 52 local stanza_handlers = {}; | |
| 53 | 51 |
| 54 local modulehelpers = setmetatable({}, { __index = _G }); | 52 local modulehelpers = setmetatable({}, { __index = _G }); |
| 55 | 53 |
| 56 -- Load modules when a host is activated | 54 -- Load modules when a host is activated |
| 57 function load_modules_for_host(host) | 55 function load_modules_for_host(host) |
| 75 return nil, err; | 73 return nil, err; |
| 76 end | 74 end |
| 77 | 75 |
| 78 if not modulemap[host] then | 76 if not modulemap[host] then |
| 79 modulemap[host] = {}; | 77 modulemap[host] = {}; |
| 80 stanza_handlers[host] = {}; | |
| 81 elseif modulemap[host][module_name] then | 78 elseif modulemap[host][module_name] then |
| 82 log("warn", "%s is already loaded for %s, so not loading again", module_name, host); | 79 log("warn", "%s is already loaded for %s, so not loading again", module_name, host); |
| 83 return nil, "module-already-loaded"; | 80 return nil, "module-already-loaded"; |
| 84 end | 81 end |
| 85 | 82 |
| 122 local name, xmlns, origin_type = stanza.name, stanza.attr.xmlns, origin.type; | 119 local name, xmlns, origin_type = stanza.name, stanza.attr.xmlns, origin.type; |
| 123 if name == "iq" and xmlns == "jabber:client" then | 120 if name == "iq" and xmlns == "jabber:client" then |
| 124 xmlns = stanza.tags[1].attr.xmlns; | 121 xmlns = stanza.tags[1].attr.xmlns; |
| 125 log("debug", "Stanza of type %s from %s has xmlns: %s", name, origin_type, xmlns); | 122 log("debug", "Stanza of type %s from %s has xmlns: %s", name, origin_type, xmlns); |
| 126 end | 123 end |
| 127 local handlers = m_stanza_handlers:get(host, origin_type, name, xmlns); | 124 local handlers = stanza_handlers:get(host, origin_type, name, xmlns); |
| 128 if handlers then | 125 if handlers then |
| 129 log("debug", "Passing stanza to mod_%s", handler_info[handlers[1]].name); | 126 log("debug", "Passing stanza to mod_%s", handler_info[handlers[1]].name); |
| 130 (handlers[1])(origin, stanza); | 127 (handlers[1])(origin, stanza); |
| 131 return true; | 128 return true; |
| 132 else | 129 else |
| 146 function api:get_host() | 143 function api:get_host() |
| 147 return self.host; | 144 return self.host; |
| 148 end | 145 end |
| 149 | 146 |
| 150 local function _add_handler(module, origin_type, tag, xmlns, handler) | 147 local function _add_handler(module, origin_type, tag, xmlns, handler) |
| 151 local handlers = m_stanza_handlers:get(module.host, origin_type, tag, xmlns); | 148 local handlers = stanza_handlers:get(module.host, origin_type, tag, xmlns); |
| 152 local msg = (tag == "iq") and "namespace" or "payload namespace"; | 149 local msg = (tag == "iq") and "namespace" or "payload namespace"; |
| 153 if not handlers then | 150 if not handlers then |
| 154 m_stanza_handlers:add(module.host, origin_type, tag, xmlns, handler); | 151 stanza_handlers:add(module.host, origin_type, tag, xmlns, handler); |
| 155 handler_info[handler] = module; | 152 handler_info[handler] = module; |
| 156 module:log("debug", "I now handle tag '%s' [%s] with %s '%s'", tag, origin_type, msg, xmlns); | 153 module:log("debug", "I now handle tag '%s' [%s] with %s '%s'", tag, origin_type, msg, xmlns); |
| 157 else | 154 else |
| 158 module:log("warn", "I wanted to handle tag '%s' [%s] with %s '%s' but mod_%s already handles that", tag, origin_type, msg, xmlns, handler_info[handlers[1]].module.name); | 155 module:log("warn", "I wanted to handle tag '%s' [%s] with %s '%s' but mod_%s already handles that", tag, origin_type, msg, xmlns, handler_info[handlers[1]].module.name); |
| 159 end | 156 end |