opensim

Subversion Repositories:
Compare Path: Rev
With Path: Rev
?path1? @ 3  →  ?path2? @ 4
/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/AsyncCommandManager.cs
@@ -51,7 +51,7 @@
 
private static Thread cmdHandlerThread;
private static int cmdHandlerThreadCycleSleepms;
private static readonly AutoResetEvent cmdHandlerResetEvent = new AutoResetEvent(false);
private static readonly System.Timers.Timer cmdEventTimer = new System.Timers.Timer();
 
/// <summary>
/// Lock for reading/writing static components of AsyncCommandManager.
@@ -179,13 +179,21 @@
 
private static void StartThread()
{
if (cmdHandlerThread == null)
if (!cmdEventTimer.Enabled.Equals(false)) return;
// Start the timer event
cmdEventTimer.Elapsed += (sender, args) =>
{
// Start the thread that will be doing the work
cmdHandlerThread
= Watchdog.StartThread(
CmdHandlerThreadLoop, "AsyncLSLCmdHandlerThread", ThreadPriority.Normal, true, true);
}
try
{
DoOneCmdHandlerPass();
}
catch (Exception e)
{
m_log.Error("[ASYNC COMMAND MANAGER]: Exception in command handler pass: ", e);
}
};
cmdEventTimer.Interval = cmdHandlerThreadCycleSleepms;
cmdEventTimer.Enabled = true;
}
 
private void ReadConfig()
@@ -192,7 +200,7 @@
{
// cmdHandlerThreadCycleSleepms = m_ScriptEngine.Config.GetInt("AsyncLLCommandLoopms", 100);
// TODO: Make this sane again
cmdHandlerThreadCycleSleepms = 100;
cmdHandlerThreadCycleSleepms = 10;
}
 
~AsyncCommandManager()
@@ -223,10 +231,10 @@
{
try
{
//Thread.Sleep(cmdHandlerThreadCycleSleepms);
Thread.Sleep(cmdHandlerThreadCycleSleepms);
 
DoOneCmdHandlerPass();
cmdHandlerResetEvent.WaitOne(cmdHandlerThreadCycleSleepms, false);
 
Watchdog.UpdateThread();
}
catch (Exception e)
@@ -261,7 +269,6 @@
m_Dataserver[s].ExpireRequests();
}
}
cmdHandlerResetEvent.Set();
}
 
/// <summary>
@@ -441,4 +448,4 @@
}
}
}
}
}