Changeset

1530:0494f5e3be23

prosody: Call initialisation functions at once
author Matthew Wild <mwild1@gmail.com>
date Sat, 11 Jul 2009 18:06:03 +0100 (2009-07-11)
parents 1529:b5e4215f797d
children 1531:21051377f11b
files prosody
diffstat 1 files changed, 52 insertions(+), 51 deletions(-) [+]
line wrap: on
line diff
--- a/prosody	Sat Jul 11 17:55:36 2009 +0100
+++ b/prosody	Sat Jul 11 18:06:03 2009 +0100
@@ -62,8 +62,6 @@
 	end
 end
 
-read_config();
-
 function load_libraries()
 	--- Initialize logging
 	require "core.loggingmanager"
@@ -74,7 +72,6 @@
 	--- Load socket framework
 	server = require "net.server"
 end	
-load_libraries();
 
 function init_global_state()
 	bare_sessions = {};
@@ -95,9 +92,36 @@
 	prosody.arg = _G.arg;
 
 	prosody.events = require "util.events".new();
+	
+	
+	-- Function to reload the config file
+	function prosody.reload_config()
+		log("info", "Reloading configuration file");
+		prosody.events.fire_event("reloading-config");
+		local ok, level, err = config.load((rawget(_G, "CFG_CONFIGDIR") or ".").."/prosody.cfg.lua");
+		if not ok then
+			if level == "parser" then
+				log("error", "There was an error parsing the configuration file: %s", tostring(err));
+			elseif level == "file" then
+				log("error", "Couldn't read the config file when trying to reload: %s", tostring(err));
+			end
+		end
+	end
+
+	-- Function to reopen logfiles
+	function prosody.reopen_logfiles()
+		log("info", "Re-opening log files");
+		eventmanager.fire_event("reopen-log-files"); -- Handled by appropriate log sinks
+		prosody.events.fire_event("reopen-log-files");
+	end
+
+	-- Function to initiate prosody shutdown
+	function prosody.shutdown(reason)
+		log("info", "Shutting down: %s", reason or "unknown reason");
+		prosody.events.fire_event("server-stopping", {reason = reason});
+		server.setquitting(true);
+	end
 end
-init_global_state();
-
 
 function read_version()
 	-- Try to determine version
@@ -112,8 +136,6 @@
 		prosody.version = "unknown";
 	end
 end
-read_version();
-log("info", "Hello and welcome to Prosody version %s", prosody.version);
 
 function load_secondary_libraries()
 	--- Load and initialise core modules
@@ -143,8 +165,6 @@
 	require "util.stanza"
 	require "util.jid"
 end
-load_secondary_libraries();
-
 
 function init_data_store()
 	local data_path = config.get("*", "core", "data_path") or CFG_DATADIR or "data";
@@ -156,37 +176,8 @@
 		return username, host, datastore, data;
 	end);
 end
-init_data_store();
 
--- Function to reload the config file
-function prosody.reload_config()
-	log("info", "Reloading configuration file");
-	prosody.events.fire_event("reloading-config");
-	local ok, level, err = config.load((rawget(_G, "CFG_CONFIGDIR") or ".").."/prosody.cfg.lua");
-	if not ok then
-		if level == "parser" then
-			log("error", "There was an error parsing the configuration file: %s", tostring(err));
-		elseif level == "file" then
-			log("error", "Couldn't read the config file when trying to reload: %s", tostring(err));
-		end
-	end
-end
-
--- Function to reopen logfiles
-function prosody.reopen_logfiles()
-	log("info", "Re-opening log files");
-	eventmanager.fire_event("reopen-log-files"); -- Handled by appropriate log sinks
-	prosody.events.fire_event("reopen-log-files");
-end
-
--- Function to initiate prosody shutdown
-function prosody.shutdown(reason)
-	log("info", "Shutting down: %s", reason or "unknown reason");
-	prosody.events.fire_event("server-stopping", {reason = reason});
-	server.setquitting(true);
-end
-
-function prosody.prepare_to_start()
+function prepare_to_start()
 	-- Signal to modules that we are ready to start
 	eventmanager.fire_event("server-starting");
 	prosody.events.fire_event("server-starting");
@@ -235,9 +226,8 @@
 
 	prosody.start_time = os.time();
 end	
-prosody.prepare_to_start();
 
-function prosody.init_global_protection()
+function init_global_protection()
 	-- Catch global accesses --
 	local locked_globals_mt = { __index = function (t, k) error("Attempt to read a non-existent global '"..k.."'", 2); end, __newindex = function (t, k, v) error("Attempt to set a global: "..tostring(k).." = "..tostring(v), 2); end }
 		
@@ -252,13 +242,8 @@
 	-- And lock now...
 	prosody.lock_globals();
 end
-prosody.init_global_protection();
 
-
-eventmanager.fire_event("server-started");
-prosody.events.fire_event("server-started");
-
-function prosody.loop()
+function loop()
 	-- Error handler for errors that make it this far
 	local function catch_uncaught_error(err)
 		if err:match("%d*: interrupted!$") then
@@ -278,9 +263,8 @@
 		socket.sleep(0.2);
 	end
 end
-prosody.loop();
 
-function prosody.cleanup()
+function cleanup()
 	log("info", "Shutdown status: Cleaning up");
 	prosody.events.fire_event("server-cleanup");
 	
@@ -317,8 +301,25 @@
 	
 	server.setquitting(true);
 end
-prosody.cleanup();
 
+read_config();
+load_libraries();
+init_global_state();
+read_version();
+log("info", "Hello and welcome to Prosody version %s", prosody.version);
+load_secondary_libraries();
+init_data_store();
+prepare_to_start();
+init_global_protection();
+
+eventmanager.fire_event("server-started");
+prosody.events.fire_event("server-started");
+
+loop();
+
+log("info", "Shutting down...");
+cleanup();
 eventmanager.fire_event("server-stopped");
 prosody.events.fire_event("server-stopped");
-log("info", "Shutdown status: Complete!");
+log("info", "Shutdown complete");
+