Software /
code /
prosody
Comparison
plugins/mod_console.lua @ 1433:e7bd00e70973
mod_console: Reload/unload a module on a component host if it is loaded there
author | Matthew Wild <mwild1@gmail.com> |
---|---|
date | Sun, 28 Jun 2009 02:46:36 +0100 |
parent | 1342:947d94e3619f |
child | 1483:efd19cdda6ca |
comparison
equal
deleted
inserted
replaced
1432:8a59a694a9c0 | 1433:e7bd00e70973 |
---|---|
160 return true, "Server reloaded"; | 160 return true, "Server reloaded"; |
161 end | 161 end |
162 | 162 |
163 def_env.module = {}; | 163 def_env.module = {}; |
164 | 164 |
165 local function get_hosts_set(hosts) | 165 local function get_hosts_set(hosts, module) |
166 if type(hosts) == "table" then | 166 if type(hosts) == "table" then |
167 if hosts[1] then | 167 if hosts[1] then |
168 return set.new(hosts); | 168 return set.new(hosts); |
169 elseif hosts._items then | 169 elseif hosts._items then |
170 return hosts; | 170 return hosts; |
171 end | 171 end |
172 elseif type(hosts) == "string" then | 172 elseif type(hosts) == "string" then |
173 return set.new { hosts }; | 173 return set.new { hosts }; |
174 elseif hosts == nil then | 174 elseif hosts == nil then |
175 local mm = require "modulemanager"; | |
175 return set.new(array.collect(keys(prosody.hosts))) | 176 return set.new(array.collect(keys(prosody.hosts))) |
176 / function (host) return prosody.hosts[host].type == "local"; end; | 177 / function (host) return prosody.hosts[host].type == "local" or module and mm.is_loaded(host, module); end; |
177 end | 178 end |
178 end | 179 end |
179 | 180 |
180 function def_env.module:load(name, hosts, config) | 181 function def_env.module:load(name, hosts, config) |
181 local mm = require "modulemanager"; | 182 local mm = require "modulemanager"; |
201 end | 202 end |
202 | 203 |
203 function def_env.module:unload(name, hosts) | 204 function def_env.module:unload(name, hosts) |
204 local mm = require "modulemanager"; | 205 local mm = require "modulemanager"; |
205 | 206 |
206 hosts = get_hosts_set(hosts); | 207 hosts = get_hosts_set(hosts, name); |
207 | 208 |
208 -- Unload the module for each host | 209 -- Unload the module for each host |
209 local ok, err, count = true, nil, 0; | 210 local ok, err, count = true, nil, 0; |
210 for host in hosts do | 211 for host in hosts do |
211 if mm.is_loaded(host, name) then | 212 if mm.is_loaded(host, name) then |
223 end | 224 end |
224 | 225 |
225 function def_env.module:reload(name, hosts) | 226 function def_env.module:reload(name, hosts) |
226 local mm = require "modulemanager"; | 227 local mm = require "modulemanager"; |
227 | 228 |
228 hosts = get_hosts_set(hosts); | 229 hosts = get_hosts_set(hosts, name); |
229 | 230 |
230 -- Reload the module for each host | 231 -- Reload the module for each host |
231 local ok, err, count = true, nil, 0; | 232 local ok, err, count = true, nil, 0; |
232 for host in hosts do | 233 for host in hosts do |
233 if mm.is_loaded(host, name) then | 234 if mm.is_loaded(host, name) then |