Comparison

core/modulemanager.lua @ 5776:bd0ff8ae98a8

Remove all trailing whitespace
author Florian Zeitz <florob@babelmonkeys.de>
date Fri, 09 Aug 2013 17:48:21 +0200
parent 5411:82b3ddba0ec7
child 6003:28a90f5fea46
comparison
equal deleted inserted replaced
5775:a6c2b8933507 5776:bd0ff8ae98a8
1 -- Prosody IM 1 -- Prosody IM
2 -- Copyright (C) 2008-2010 Matthew Wild 2 -- Copyright (C) 2008-2010 Matthew Wild
3 -- Copyright (C) 2008-2010 Waqas Hussain 3 -- Copyright (C) 2008-2010 Waqas Hussain
4 -- 4 --
5 -- This project is MIT/X11 licensed. Please see the 5 -- This project is MIT/X11 licensed. Please see the
6 -- COPYING file in the source package for more information. 6 -- COPYING file in the source package for more information.
7 -- 7 --
8 8
9 local logger = require "util.logger"; 9 local logger = require "util.logger";
43 local modulemap = { ["*"] = {} }; 43 local modulemap = { ["*"] = {} };
44 44
45 -- Load modules when a host is activated 45 -- Load modules when a host is activated
46 function load_modules_for_host(host) 46 function load_modules_for_host(host)
47 local component = config.get(host, "component_module"); 47 local component = config.get(host, "component_module");
48 48
49 local global_modules_enabled = config.get("*", "modules_enabled"); 49 local global_modules_enabled = config.get("*", "modules_enabled");
50 local global_modules_disabled = config.get("*", "modules_disabled"); 50 local global_modules_disabled = config.get("*", "modules_disabled");
51 local host_modules_enabled = config.get(host, "modules_enabled"); 51 local host_modules_enabled = config.get(host, "modules_enabled");
52 local host_modules_disabled = config.get(host, "modules_disabled"); 52 local host_modules_disabled = config.get(host, "modules_disabled");
53 53
54 if host_modules_enabled == global_modules_enabled then host_modules_enabled = nil; end 54 if host_modules_enabled == global_modules_enabled then host_modules_enabled = nil; end
55 if host_modules_disabled == global_modules_disabled then host_modules_disabled = nil; end 55 if host_modules_disabled == global_modules_disabled then host_modules_disabled = nil; end
56 56
57 local global_modules = set.new(autoload_modules) + set.new(global_modules_enabled) - set.new(global_modules_disabled); 57 local global_modules = set.new(autoload_modules) + set.new(global_modules_enabled) - set.new(global_modules_disabled);
58 if component then 58 if component then
59 global_modules = set.intersection(set.new(component_inheritable_modules), global_modules); 59 global_modules = set.intersection(set.new(component_inheritable_modules), global_modules);
60 end 60 end
61 local modules = (global_modules + set.new(host_modules_enabled)) - set.new(host_modules_disabled); 61 local modules = (global_modules + set.new(host_modules_enabled)) - set.new(host_modules_disabled);
62 62
63 -- COMPAT w/ pre 0.8 63 -- COMPAT w/ pre 0.8
64 if modules:contains("console") then 64 if modules:contains("console") then
65 log("error", "The mod_console plugin has been renamed to mod_admin_telnet. Please update your config."); 65 log("error", "The mod_console plugin has been renamed to mod_admin_telnet. Please update your config.");
66 modules:remove("console"); 66 modules:remove("console");
67 modules:add("admin_telnet"); 67 modules:add("admin_telnet");
68 end 68 end
69 69
70 if component then 70 if component then
71 load(host, component); 71 load(host, component);
72 end 72 end
73 for module in modules do 73 for module in modules do
74 load(host, module); 74 load(host, module);
82 --- Private helpers --- 82 --- Private helpers ---
83 83
84 local function do_unload_module(host, name) 84 local function do_unload_module(host, name)
85 local mod = get_module(host, name); 85 local mod = get_module(host, name);
86 if not mod then return nil, "module-not-loaded"; end 86 if not mod then return nil, "module-not-loaded"; end
87 87
88 if module_has_method(mod, "unload") then 88 if module_has_method(mod, "unload") then
89 local ok, err = call_module_method(mod, "unload"); 89 local ok, err = call_module_method(mod, "unload");
90 if (not ok) and err then 90 if (not ok) and err then
91 log("warn", "Non-fatal error unloading module '%s' on '%s': %s", name, host, err); 91 log("warn", "Non-fatal error unloading module '%s' on '%s': %s", name, host, err);
92 end 92 end
93 end 93 end
94 94
95 for object, event, handler in mod.module.event_handlers:iter(nil, nil, nil) do 95 for object, event, handler in mod.module.event_handlers:iter(nil, nil, nil) do
96 object.remove_handler(event, handler); 96 object.remove_handler(event, handler);
97 end 97 end
98 98
99 if mod.module.items then -- remove items 99 if mod.module.items then -- remove items
100 local events = (host == "*" and prosody.events) or hosts[host].events; 100 local events = (host == "*" and prosody.events) or hosts[host].events;
101 for key,t in pairs(mod.module.items) do 101 for key,t in pairs(mod.module.items) do
102 for i = #t,1,-1 do 102 for i = #t,1,-1 do
103 local value = t[i]; 103 local value = t[i];
115 if not (host and module_name) then 115 if not (host and module_name) then
116 return nil, "insufficient-parameters"; 116 return nil, "insufficient-parameters";
117 elseif not hosts[host] and host ~= "*"then 117 elseif not hosts[host] and host ~= "*"then
118 return nil, "unknown-host"; 118 return nil, "unknown-host";
119 end 119 end
120 120
121 if not modulemap[host] then 121 if not modulemap[host] then
122 modulemap[host] = hosts[host].modules; 122 modulemap[host] = hosts[host].modules;
123 end 123 end
124 124
125 if modulemap[host][module_name] then 125 if modulemap[host][module_name] then
126 log("warn", "%s is already loaded for %s, so not loading again", module_name, host); 126 log("warn", "%s is already loaded for %s, so not loading again", module_name, host);
127 return nil, "module-already-loaded"; 127 return nil, "module-already-loaded";
128 elseif modulemap["*"][module_name] then 128 elseif modulemap["*"][module_name] then
129 local mod = modulemap["*"][module_name]; 129 local mod = modulemap["*"][module_name];
145 end 145 end
146 return host_module; 146 return host_module;
147 end 147 end
148 return nil, "global-module-already-loaded"; 148 return nil, "global-module-already-loaded";
149 end 149 end
150 150
151 151
152 152
153 local _log = logger.init(host..":"..module_name); 153 local _log = logger.init(host..":"..module_name);
154 local api_instance = setmetatable({ name = module_name, host = host, 154 local api_instance = setmetatable({ name = module_name, host = host,
155 _log = _log, log = function (self, ...) return _log(...); end, event_handlers = new_multitable(), 155 _log = _log, log = function (self, ...) return _log(...); end, event_handlers = new_multitable(),
156 reloading = not not state, saved_state = state~=true and state or nil } 156 reloading = not not state, saved_state = state~=true and state or nil }
157 , { __index = api }); 157 , { __index = api });
158 158
159 local pluginenv = setmetatable({ module = api_instance }, { __index = _G }); 159 local pluginenv = setmetatable({ module = api_instance }, { __index = _G });
160 api_instance.environment = pluginenv; 160 api_instance.environment = pluginenv;
161 161
162 local mod, err = pluginloader.load_code(module_name, nil, pluginenv); 162 local mod, err = pluginloader.load_code(module_name, nil, pluginenv);
163 if not mod then 163 if not mod then
164 log("error", "Unable to load module '%s': %s", module_name or "nil", err or "nil"); 164 log("error", "Unable to load module '%s': %s", module_name or "nil", err or "nil");
165 return nil, err; 165 return nil, err;
166 end 166 end