From 3f6c6eed33a4d6101180abd4c14d0d0faab9c5d7 Mon Sep 17 00:00:00 2001
From: SignpostMarv
Date: Wed, 5 Sep 2012 11:25:37 +0100
Subject: pasting in show uptime code

Signed-off-by: BlueWall <jamesh@bluewallgroup.com>
---
 OpenSim/Server/Base/ServicesServerBase.cs | 41 +++++++++++++++++++++++++++++++
 1 file changed, 41 insertions(+)

(limited to 'OpenSim/Server')

diff --git a/OpenSim/Server/Base/ServicesServerBase.cs b/OpenSim/Server/Base/ServicesServerBase.cs
index b137c05..0cff6ed 100644
--- a/OpenSim/Server/Base/ServicesServerBase.cs
+++ b/OpenSim/Server/Base/ServicesServerBase.cs
@@ -26,6 +26,7 @@
  */
 
 using System;
+using System.Collections.Generic;
 using System.IO;
 using System.Reflection;
 using System.Threading;
@@ -71,10 +72,17 @@ namespace OpenSim.Server.Base
         //
         private string m_pidFile = String.Empty;
 
+        /// <summary>
+        /// Time at which this server was started
+        /// </summary>
+        protected DateTime m_startuptime;
+
         // Handle all the automagical stuff
         //
         public ServicesServerBase(string prompt, string[] args)
         {
+            m_startuptime = DateTime.Now;
+
             // Save raw arguments
             //
             m_Arguments = args;
@@ -250,6 +258,10 @@ namespace OpenSim.Server.Base
                                           "command-script <script>",
                                           "Run a command script from file", HandleScript);
 
+            MainConsole.Instance.Commands.AddCommand("General", false, "show uptime",
+                        "show uptime",
+                        "Show server uptime", HandleShow);
+
 
             // Allow derived classes to perform initialization that
             // needs to be done after the console has opened
@@ -345,5 +357,34 @@ namespace OpenSim.Server.Base
             {
             }
         }
+
+        public virtual void HandleShow(string module, string[] cmd)
+        {
+            List<string> args = new List<string>(cmd);
+
+            args.RemoveAt(0);
+
+            string[] showParams = args.ToArray();
+
+            switch (showParams[0])
+            {
+                case "uptime":
+                    MainConsole.Instance.Output(GetUptimeReport());
+                    break;
+            }
+        }
+
+        /// <summary>
+        /// Return a report about the uptime of this server
+        /// </summary>
+        /// <returns></returns>
+        protected string GetUptimeReport()
+        {
+            StringBuilder sb = new StringBuilder(String.Format("Time now is {0}\n", DateTime.Now));
+            sb.Append(String.Format("Server has been running since {0}, {1}\n", m_startuptime.DayOfWeek, m_startuptime));
+            sb.Append(String.Format("That is an elapsed time of {0}\n", DateTime.Now - m_startuptime));
+
+            return sb.ToString();
+        }
     }
 }
-- 
cgit v1.1