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". --- .../Shared/Api/Implementation/Plugins/Timer.cs | 52 +++++++++++++++------- 1 file changed, 35 insertions(+), 17 deletions(-) (limited to 'OpenSim/Region/ScriptEngine/Shared/Api/Implementation/Plugins/Timer.cs') 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 Timers = new Dictionary(); + private Dictionary Timers = new Dictionary(); 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.ValueCollection tvals = Timers.Values; - foreach (TimerClass ts in tvals) + Dictionary.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.ValueCollection tvals = Timers.Values; - foreach (TimerClass ts in tvals) + Dictionary.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 GetTimersInfo() + { + List retList = new List(); + + lock (TimerListLock) + { + foreach (TimerInfo i in Timers.Values) + retList.Add(i.Clone()); + } + + return retList; + } } } -- cgit v1.1