Changeset

3597:8090880f0e18

hostmanager, componentmanager: hostmanager now handles component initialization at server start, not componentmanager.
author Waqas Hussain <waqas20@gmail.com>
date Wed, 10 Nov 2010 19:57:35 +0500
parents 3596:bbeba9f2acf8
children 3598:48ebea937260
files core/componentmanager.lua core/hostmanager.lua
diffstat 2 files changed, 6 insertions(+), 24 deletions(-) [+]
line wrap: on
line diff
--- a/core/componentmanager.lua	Wed Nov 10 19:54:38 2010 +0500
+++ b/core/componentmanager.lua	Wed Nov 10 19:57:35 2010 +0500
@@ -34,28 +34,6 @@
 	end
 end
 
-function load_enabled_components(config)
-	local defined_hosts = config or configmanager.getconfig();
-		
-	for host, host_config in pairs(defined_hosts) do
-		if host ~= "*" and ((host_config.core.enabled == nil or host_config.core.enabled) and type(host_config.core.component_module) == "string") then
-			hosts[host] = create_component(host);
-			components[host] = default_component_handler;
-			local ok, err = modulemanager.load(host, host_config.core.component_module);
-			if not ok then
-				log("error", "Error loading %s component %s: %s", tostring(host_config.core.component_module), tostring(host), tostring(err));
-			else
-				fire_event("component-activated", host, host_config);
-				log("debug", "Activated %s component: %s", host_config.core.component_module, host);
-			end
-		end
-	end
-end
-
-if prosody and prosody.events then
-	prosody.events.add_handler("server-starting", load_enabled_components);
-end
-
 function create_component(host, component, events)
 	-- TODO check for host well-formedness
 	return { type = "component", host = host, s2sout = {},
--- a/core/hostmanager.lua	Wed Nov 10 19:54:38 2010 +0500
+++ b/core/hostmanager.lua	Wed Nov 10 19:57:35 2010 +0500
@@ -32,8 +32,10 @@
 	local activated_any_host;
 	
 	for host, host_config in pairs(defined_hosts) do
-		if host ~= "*" and host_config.core.enabled ~= false and not host_config.core.component_module then
-			activated_any_host = true;
+		if host ~= "*" and host_config.core.enabled ~= false then
+			if not host_config.core.component_module then
+				activated_any_host = true;
+			end
 			activate(host, host_config);
 		end
 	end
@@ -49,6 +51,7 @@
 prosody_events.add_handler("server-starting", load_enabled_hosts);
 
 function activate(host, host_config)
+	if hosts[host] then return nil, "host-already-exists"; end
 	local host_session = {
 		host = host;
 		s2sout = {};
@@ -74,6 +77,7 @@
 	
 	log((hosts_loaded_once and "info") or "debug", "Activated host: %s", host);
 	prosody_events.fire_event("host-activated", host, host_config);
+	return true;
 end
 
 function deactivate(host, reason)