Software /
code /
prosody
Changeset
439:6608ad3a72f3
is_loaded() and incomplete unload() for modules
author | Matthew Wild <mwild1@gmail.com> |
---|---|
date | Thu, 27 Nov 2008 16:52:30 +0000 |
parents | 438:193f9dd64f17 |
children | 440:dee02bf4656a |
files | core/modulemanager.lua |
diffstat | 1 files changed, 20 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- a/core/modulemanager.lua Thu Nov 27 03:12:12 2008 +0000 +++ b/core/modulemanager.lua Thu Nov 27 16:52:30 2008 +0000 @@ -27,6 +27,9 @@ 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 @@ 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;