is_loaded() and incomplete unload() for modules

remotes/origin/sasl
Matthew Wild 18 years ago
parent a153b3c267
commit ce18fc957d
  1. 20
      core/modulemanager.lua

@ -27,6 +27,9 @@ local modulehelpers = setmetatable({}, { __index = _G });
function load(host, module_name, config)
if not (host and module_name) then
return nil, "insufficient-parameters";
end
local mod, err = loadfile("plugins/mod_"..module_name..".lua");
if not mod then
log("error", "Unable to load module '%s': %s", module_name or "nil", err or "nil");
@ -59,6 +62,23 @@ function load(host, module_name, config)
return true;
end
function is_loaded(host, name)
return modulemap[host] and modulemap[host][name] and true;
end
function unload(host, name, ...)
local mod = modulemap[host] and modulemap[host][name];
if not mod then return nil, "module-not-loaded"; end
if type(mod.unload) == "function" then
local ok, err = pcall(mod.unload, ...)
if (not ok) and err then
log("warn", "Non-fatal error unloading module '%s' from '%s': %s", name, host, err);
end
end
end
function handle_stanza(host, origin, stanza)
local name, xmlns, origin_type = stanza.name, stanza.attr.xmlns, origin.type;

Loading…
Cancel
Save