prosodyctl: Improve usability with status messages, and waiting up to 5s for the server to start/stop

Thu, 02 Jul 2009 04:43:08 +0100

author
Matthew Wild <mwild1@gmail.com>
date
Thu, 02 Jul 2009 04:43:08 +0100
changeset 1458
fce75b4efda9
parent 1457
4723bd466a54
child 1459
545208bc0e84

prosodyctl: Improve usability with status messages, and waiting up to 5s for the server to start/stop

prosodyctl file | annotate | diff | comparison | revisions
--- a/prosodyctl	Thu Jul 02 04:11:51 2009 +0100
+++ b/prosodyctl	Thu Jul 02 04:43:08 2009 +0100
@@ -104,6 +104,7 @@
 require "core.modulemanager"
 
 require "util.prosodyctl"
+require "socket"
 -----------------------
 
 function show_message(msg, ...)
@@ -291,7 +292,24 @@
 	end
 	
 	local ok, ret = prosodyctl.start();
-	if ok then return 0; end
+	if ok then
+		local i=1;
+		while true do
+			local ok, running = prosodyctl.isrunning();
+			if ok and running then
+				break;
+			elseif i == 5 then
+				show_message("Still waiting...");
+			elseif i >= 10 then
+				show_message("Prosody is still not running. Please give it some time or check your log files for errors.");
+				return 2;
+			end
+			socket.sleep(0.5);
+			i = i + 1;
+		end
+		show_message("Started");
+		return 0;
+	end
 
 	show_message("Failed to start Prosody");
 	show_message(error_messages[ret])	
@@ -344,7 +362,24 @@
 	end
 	
 	local ok, ret = prosodyctl.stop();
-	if ok then return 0; end
+	if ok then
+		local i=1;
+		while true do
+			local ok, running = prosodyctl.isrunning();
+			if ok and not running then
+				break;
+			elseif i == 5 then
+				show_message("Still waiting...");
+			elseif i >= 10 then
+				show_message("Prosody is still running. Please give it some time or check your log files for errors.");
+				return 2;
+			end
+			socket.sleep(0.5);
+			i = i + 1;
+		end
+		show_message("Stopped");
+		return 0;
+	end
 
 	show_message(error_messages[ret]);
 	return 1;

mercurial