From 2563553f80b109cbd955484865a0eb104983f206 Mon Sep 17 00:00:00 2001
From: Justin Clark-Casey (justincc)
Date: Thu, 10 Jan 2013 00:57:49 +0000
Subject: Add "show script timers" command to show script timers.  For debug
 purposes.

Also, "show sensors" changes to "show script sensors".
---
 .../Api/Implementation/Plugins/SensorRepeat.cs     | 18 ++------
 .../Shared/Api/Implementation/Plugins/Timer.cs     | 52 +++++++++++++++-------
 2 files changed, 38 insertions(+), 32 deletions(-)

(limited to 'OpenSim/Region/ScriptEngine/Shared')

diff --git a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/Plugins/SensorRepeat.cs b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/Plugins/SensorRepeat.cs
index 37422d7..dd45406 100644
--- a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/Plugins/SensorRepeat.cs
+++ b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/Plugins/SensorRepeat.cs
@@ -61,19 +61,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api.Plugins
 
             public SensorInfo Clone()
             {
-                SensorInfo s = new SensorInfo();
-                s.localID = localID;
-                s.itemID = itemID;
-                s.interval = interval;
-                s.next = next;
-                s.name = name;
-                s.keyID = keyID;
-                s.type = type;
-                s.range = range;
-                s.arc = arc;
-                s.host = host;
-
-                return s;
+                return (SensorInfo)this.MemberwiseClone();
             }
         }
 
@@ -701,8 +689,8 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api.Plugins
 
             lock (SenseRepeatListLock)
             {
-                foreach (SensorInfo si in SenseRepeaters)
-                    retList.Add(si.Clone());
+                foreach (SensorInfo i in SenseRepeaters)
+                    retList.Add(i.Clone());
             }
 
             return retList;
diff --git a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/Plugins/Timer.cs b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/Plugins/Timer.cs
index bc63030..0b14565 100644
--- a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/Plugins/Timer.cs
+++ b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/Plugins/Timer.cs
@@ -35,6 +35,21 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api.Plugins
 {
     public class Timer
     {
+        public class TimerInfo
+        {
+            public uint localID;
+            public UUID itemID;
+            //public double interval;
+            public long interval;
+            //public DateTime next;
+            public long next;
+
+            public TimerInfo Clone()
+            {
+                return (TimerInfo)this.MemberwiseClone();
+            }
+        }
+
         public AsyncCommandManager m_CmdManager;
 
         public int TimersCount
@@ -59,17 +74,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api.Plugins
             return localID.ToString() + itemID.ToString();
         }
 
-        private class TimerClass
-        {
-            public uint localID;
-            public UUID itemID;
-            //public double interval;
-            public long interval;
-            //public DateTime next;
-            public long next;
-        }
-
-        private Dictionary<string,TimerClass> Timers = new Dictionary<string,TimerClass>();
+        private Dictionary<string,TimerInfo> Timers = new Dictionary<string,TimerInfo>();
         private object TimerListLock = new object();
 
         public void SetTimerEvent(uint m_localID, UUID m_itemID, double sec)
@@ -81,7 +86,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api.Plugins
             }
 
             // Add to timer
-            TimerClass ts = new TimerClass();
+            TimerInfo ts = new TimerInfo();
             ts.localID = m_localID;
             ts.itemID = m_itemID;
             ts.interval = Convert.ToInt64(sec * 10000000); // How many 100 nanoseconds (ticks) should we wait
@@ -121,8 +126,8 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api.Plugins
             lock (TimerListLock)
             {
                 // Go through all timers
-                Dictionary<string, TimerClass>.ValueCollection tvals = Timers.Values;
-                foreach (TimerClass ts in tvals)
+                Dictionary<string, TimerInfo>.ValueCollection tvals = Timers.Values;
+                foreach (TimerInfo ts in tvals)
                 {
                     // Time has passed?
                     if (ts.next < DateTime.Now.Ticks)
@@ -147,8 +152,8 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api.Plugins
 
             lock (TimerListLock)
             {
-                Dictionary<string, TimerClass>.ValueCollection tvals = Timers.Values;
-                foreach (TimerClass ts in tvals)
+                Dictionary<string, TimerInfo>.ValueCollection tvals = Timers.Values;
+                foreach (TimerInfo ts in tvals)
                 {
                     if (ts.itemID == itemID)
                     {
@@ -167,7 +172,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api.Plugins
 
             while (idx < data.Length)
             {
-                TimerClass ts = new TimerClass();
+                TimerInfo ts = new TimerInfo();
 
                 ts.localID = localID;
                 ts.itemID = itemID;
@@ -181,5 +186,18 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api.Plugins
                 }
             }
         }
+
+        public List<TimerInfo> GetTimersInfo()
+        {
+            List<TimerInfo> retList = new List<TimerInfo>();
+
+            lock (TimerListLock)
+            {
+                foreach (TimerInfo i in Timers.Values)
+                    retList.Add(i.Clone());
+            }
+
+            return retList;
+        }  
     }
 }
-- 
cgit v1.1