return true;
end
-local function do_load_module(host, module_name)
+local function do_load_module(host, module_name, state)
if not (host and module_name) then
return nil, "insufficient-parameters";
elseif not hosts[host] and host ~= "*"then
local _log = logger.init(host..":"..module_name);
local api_instance = setmetatable({ name = module_name, host = host,
- _log = _log, log = function (self, ...) return _log(...); end, event_handlers = new_multitable() }
+ _log = _log, log = function (self, ...) return _log(...); end, event_handlers = new_multitable(),
+ reloading = not not state, saved_state = state~=true and state or nil }
, { __index = api });
local pluginenv = setmetatable({ module = api_instance }, { __index = _G });
log("warn", "Error loading module '%s' on '%s': %s", module_name, host, err or "nil");
end
end
+ api_instance.reloading, api_instance.saved_state = nil, nil;
if api_instance.host == "*" then
if not api_instance.global then -- COMPAT w/pre-0.9
end
end
+ mod.module.reloading = true;
do_unload_module(host, name);
- local ok, err = do_load_module(host, name);
+ local ok, err = do_load_module(host, name, saved or true);
if ok then
mod = get_module(host, name);
if module_has_method(mod, "restore") then