Merge branch 'melanie_test' into prioritization
This makes SmartThreadPool configurable and also makes it the default, since the regular thread pool simply stinks.prioritization
commit
b35fbe1f98
|
@ -29,7 +29,7 @@ namespace OpenSim
|
||||||
{
|
{
|
||||||
public class VersionInfo
|
public class VersionInfo
|
||||||
{
|
{
|
||||||
private const string VERSION_NUMBER = "0.6.8";
|
private const string VERSION_NUMBER = "0.6.8-mel_t";
|
||||||
private const Flavour VERSION_FLAVOUR = Flavour.Dev;
|
private const Flavour VERSION_FLAVOUR = Flavour.Dev;
|
||||||
|
|
||||||
public enum Flavour
|
public enum Flavour
|
||||||
|
|
|
@ -41,12 +41,14 @@ using System.Security.Cryptography;
|
||||||
using System.Text;
|
using System.Text;
|
||||||
using System.Text.RegularExpressions;
|
using System.Text.RegularExpressions;
|
||||||
using System.Xml;
|
using System.Xml;
|
||||||
|
using System.Threading;
|
||||||
using log4net;
|
using log4net;
|
||||||
using Nini.Config;
|
using Nini.Config;
|
||||||
using Nwc.XmlRpc;
|
using Nwc.XmlRpc;
|
||||||
using BclExtras;
|
using BclExtras;
|
||||||
using OpenMetaverse;
|
using OpenMetaverse;
|
||||||
using OpenMetaverse.StructuredData;
|
using OpenMetaverse.StructuredData;
|
||||||
|
using Amib.Threading;
|
||||||
|
|
||||||
namespace OpenSim.Framework
|
namespace OpenSim.Framework
|
||||||
{
|
{
|
||||||
|
@ -67,6 +69,8 @@ namespace OpenSim.Framework
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public class Util
|
public class Util
|
||||||
{
|
{
|
||||||
|
private static SmartThreadPool m_ThreadPool = null;
|
||||||
|
|
||||||
private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
|
private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
|
||||||
|
|
||||||
private static uint nextXferID = 5000;
|
private static uint nextXferID = 5000;
|
||||||
|
@ -83,7 +87,7 @@ namespace OpenSim.Framework
|
||||||
public static readonly Regex UUIDPattern
|
public static readonly Regex UUIDPattern
|
||||||
= new Regex("^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$");
|
= new Regex("^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$");
|
||||||
|
|
||||||
public static FireAndForgetMethod FireAndForgetMethod = FireAndForgetMethod.UnsafeQueueUserWorkItem;
|
public static FireAndForgetMethod FireAndForgetMethod = FireAndForgetMethod.SmartThreadPool;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Linear interpolates B<->C using percent A
|
/// Linear interpolates B<->C using percent A
|
||||||
|
@ -1315,6 +1319,23 @@ namespace OpenSim.Framework
|
||||||
FireAndForget(callback, null);
|
FireAndForget(callback, null);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static void SetMaxThreads(int maxThreads)
|
||||||
|
{
|
||||||
|
if (m_ThreadPool != null)
|
||||||
|
return;
|
||||||
|
|
||||||
|
STPStartInfo startInfo = new STPStartInfo();
|
||||||
|
startInfo.IdleTimeout = 2000; // 2 seconds
|
||||||
|
startInfo.MaxWorkerThreads = maxThreads;
|
||||||
|
startInfo.MinWorkerThreads = 2;
|
||||||
|
startInfo.StackSize = 524288;
|
||||||
|
startInfo.ThreadPriority = ThreadPriority.Normal;
|
||||||
|
|
||||||
|
startInfo.StartSuspended = false;
|
||||||
|
|
||||||
|
m_ThreadPool = new SmartThreadPool(startInfo);
|
||||||
|
}
|
||||||
|
|
||||||
public static void FireAndForget(System.Threading.WaitCallback callback, object obj)
|
public static void FireAndForget(System.Threading.WaitCallback callback, object obj)
|
||||||
{
|
{
|
||||||
switch (FireAndForgetMethod)
|
switch (FireAndForgetMethod)
|
||||||
|
@ -1330,8 +1351,7 @@ namespace OpenSim.Framework
|
||||||
wrapper.FireAndForget(callback, obj);
|
wrapper.FireAndForget(callback, obj);
|
||||||
break;
|
break;
|
||||||
case FireAndForgetMethod.SmartThreadPool:
|
case FireAndForgetMethod.SmartThreadPool:
|
||||||
Amib.Threading.SmartThreadPool stp = Singleton.GetInstance<Amib.Threading.SmartThreadPool>();
|
m_ThreadPool.QueueWorkItem(delegate(object o) { callback(o); return null; }, obj);
|
||||||
stp.QueueWorkItem(delegate(object o) { callback(o); return null; }, obj);
|
|
||||||
break;
|
break;
|
||||||
case FireAndForgetMethod.Thread:
|
case FireAndForgetMethod.Thread:
|
||||||
System.Threading.Thread thread = new System.Threading.Thread(delegate(object o) { callback(o); });
|
System.Threading.Thread thread = new System.Threading.Thread(delegate(object o) { callback(o); });
|
||||||
|
|
|
@ -67,6 +67,8 @@ namespace OpenSim
|
||||||
|
|
||||||
IConfig startupConfig = m_config.Source.Configs["Startup"];
|
IConfig startupConfig = m_config.Source.Configs["Startup"];
|
||||||
|
|
||||||
|
Util.SetMaxThreads(startupConfig.GetInt("MaxPoolThreads", 15));
|
||||||
|
|
||||||
if (startupConfig != null)
|
if (startupConfig != null)
|
||||||
{
|
{
|
||||||
m_startupCommandsFile = startupConfig.GetString("startup_console_commands_file", "startup_commands.txt");
|
m_startupCommandsFile = startupConfig.GetString("startup_console_commands_file", "startup_commands.txt");
|
||||||
|
|
|
@ -133,13 +133,6 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
|
||||||
return lease;
|
return lease;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected virtual void ConditionalScriptSleep(int delay)
|
|
||||||
{
|
|
||||||
// Uncomment to get SL compatibility!
|
|
||||||
//
|
|
||||||
// ScriptSleep(delay);
|
|
||||||
}
|
|
||||||
|
|
||||||
protected virtual void ScriptSleep(int delay)
|
protected virtual void ScriptSleep(int delay)
|
||||||
{
|
{
|
||||||
delay = (int)((float)delay * m_ScriptDelayFactor);
|
delay = (int)((float)delay * m_ScriptDelayFactor);
|
||||||
|
@ -1682,7 +1675,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
|
||||||
{
|
{
|
||||||
m_host.AddScriptLPS(1);
|
m_host.AddScriptLPS(1);
|
||||||
SetTexture(m_host, texture, face);
|
SetTexture(m_host, texture, face);
|
||||||
ConditionalScriptSleep(200);
|
ScriptSleep(200);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void llSetLinkTexture(int linknumber, string texture, int face)
|
public void llSetLinkTexture(int linknumber, string texture, int face)
|
||||||
|
@ -1694,7 +1687,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
|
||||||
foreach (SceneObjectPart part in parts)
|
foreach (SceneObjectPart part in parts)
|
||||||
SetTexture(part, texture, face);
|
SetTexture(part, texture, face);
|
||||||
|
|
||||||
ConditionalScriptSleep(200);
|
ScriptSleep(200);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected void SetTexture(SceneObjectPart part, string texture, int face)
|
protected void SetTexture(SceneObjectPart part, string texture, int face)
|
||||||
|
@ -1739,7 +1732,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
|
||||||
m_host.AddScriptLPS(1);
|
m_host.AddScriptLPS(1);
|
||||||
|
|
||||||
ScaleTexture(m_host, u, v, face);
|
ScaleTexture(m_host, u, v, face);
|
||||||
ConditionalScriptSleep(200);
|
ScriptSleep(200);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected void ScaleTexture(SceneObjectPart part, double u, double v, int face)
|
protected void ScaleTexture(SceneObjectPart part, double u, double v, int face)
|
||||||
|
@ -1775,7 +1768,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
|
||||||
{
|
{
|
||||||
m_host.AddScriptLPS(1);
|
m_host.AddScriptLPS(1);
|
||||||
OffsetTexture(m_host, u, v, face);
|
OffsetTexture(m_host, u, v, face);
|
||||||
ConditionalScriptSleep(200);
|
ScriptSleep(200);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected void OffsetTexture(SceneObjectPart part, double u, double v, int face)
|
protected void OffsetTexture(SceneObjectPart part, double u, double v, int face)
|
||||||
|
@ -1811,7 +1804,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
|
||||||
{
|
{
|
||||||
m_host.AddScriptLPS(1);
|
m_host.AddScriptLPS(1);
|
||||||
RotateTexture(m_host, rotation, face);
|
RotateTexture(m_host, rotation, face);
|
||||||
ConditionalScriptSleep(200);
|
ScriptSleep(200);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected void RotateTexture(SceneObjectPart part, double rotation, int face)
|
protected void RotateTexture(SceneObjectPart part, double rotation, int face)
|
||||||
|
@ -2283,7 +2276,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
|
||||||
{
|
{
|
||||||
m_host.AddScriptLPS(1);
|
m_host.AddScriptLPS(1);
|
||||||
m_host.PreloadSound(sound);
|
m_host.PreloadSound(sound);
|
||||||
ConditionalScriptSleep(1000);
|
ScriptSleep(1000);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
@ -2575,28 +2568,28 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
|
||||||
{
|
{
|
||||||
m_host.AddScriptLPS(1);
|
m_host.AddScriptLPS(1);
|
||||||
Deprecated("llMakeExplosion");
|
Deprecated("llMakeExplosion");
|
||||||
ConditionalScriptSleep(100);
|
ScriptSleep(100);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void llMakeFountain(int particles, double scale, double vel, double lifetime, double arc, int bounce, string texture, LSL_Vector offset, double bounce_offset)
|
public void llMakeFountain(int particles, double scale, double vel, double lifetime, double arc, int bounce, string texture, LSL_Vector offset, double bounce_offset)
|
||||||
{
|
{
|
||||||
m_host.AddScriptLPS(1);
|
m_host.AddScriptLPS(1);
|
||||||
Deprecated("llMakeFountain");
|
Deprecated("llMakeFountain");
|
||||||
ConditionalScriptSleep(100);
|
ScriptSleep(100);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void llMakeSmoke(int particles, double scale, double vel, double lifetime, double arc, string texture, LSL_Vector offset)
|
public void llMakeSmoke(int particles, double scale, double vel, double lifetime, double arc, string texture, LSL_Vector offset)
|
||||||
{
|
{
|
||||||
m_host.AddScriptLPS(1);
|
m_host.AddScriptLPS(1);
|
||||||
Deprecated("llMakeSmoke");
|
Deprecated("llMakeSmoke");
|
||||||
ConditionalScriptSleep(100);
|
ScriptSleep(100);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void llMakeFire(int particles, double scale, double vel, double lifetime, double arc, string texture, LSL_Vector offset)
|
public void llMakeFire(int particles, double scale, double vel, double lifetime, double arc, string texture, LSL_Vector offset)
|
||||||
{
|
{
|
||||||
m_host.AddScriptLPS(1);
|
m_host.AddScriptLPS(1);
|
||||||
Deprecated("llMakeFire");
|
Deprecated("llMakeFire");
|
||||||
ConditionalScriptSleep(100);
|
ScriptSleep(100);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void llRezAtRoot(string inventory, LSL_Vector pos, LSL_Vector vel, LSL_Rotation rot, int param)
|
public void llRezAtRoot(string inventory, LSL_Vector pos, LSL_Vector vel, LSL_Rotation rot, int param)
|
||||||
|
@ -2655,7 +2648,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
|
||||||
}
|
}
|
||||||
// Variable script delay? (see (http://wiki.secondlife.com/wiki/LSL_Delay)
|
// Variable script delay? (see (http://wiki.secondlife.com/wiki/LSL_Delay)
|
||||||
ScriptSleep((int)((groupmass * velmag) / 10));
|
ScriptSleep((int)((groupmass * velmag) / 10));
|
||||||
ConditionalScriptSleep(100);
|
ScriptSleep(100);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -2941,7 +2934,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
|
||||||
}
|
}
|
||||||
|
|
||||||
emailModule.SendEmail(m_host.UUID, address, subject, message);
|
emailModule.SendEmail(m_host.UUID, address, subject, message);
|
||||||
ConditionalScriptSleep(20000);
|
ScriptSleep(20000);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void llGetNextEmail(string address, string subject)
|
public void llGetNextEmail(string address, string subject)
|
||||||
|
@ -3745,7 +3738,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
|
||||||
// destination is an object
|
// destination is an object
|
||||||
World.MoveTaskInventoryItem(destId, m_host, objId);
|
World.MoveTaskInventoryItem(destId, m_host, objId);
|
||||||
}
|
}
|
||||||
ConditionalScriptSleep(3000);
|
ScriptSleep(3000);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void llRemoveInventory(string name)
|
public void llRemoveInventory(string name)
|
||||||
|
@ -3846,7 +3839,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
|
||||||
AsyncCommands.
|
AsyncCommands.
|
||||||
DataserverPlugin.DataserverReply(rq.ToString(), reply);
|
DataserverPlugin.DataserverReply(rq.ToString(), reply);
|
||||||
|
|
||||||
ConditionalScriptSleep(100);
|
ScriptSleep(100);
|
||||||
return tid.ToString();
|
return tid.ToString();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -3884,11 +3877,11 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
|
||||||
reply);
|
reply);
|
||||||
});
|
});
|
||||||
|
|
||||||
ConditionalScriptSleep(1000);
|
ScriptSleep(1000);
|
||||||
return tid.ToString();
|
return tid.ToString();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
ConditionalScriptSleep(1000);
|
ScriptSleep(1000);
|
||||||
return String.Empty;
|
return String.Empty;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -3916,7 +3909,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
ConditionalScriptSleep(5000);
|
ScriptSleep(5000);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void llTextBox(string avatar, string message, int chat_channel)
|
public void llTextBox(string avatar, string message, int chat_channel)
|
||||||
|
@ -5376,7 +5369,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
|
||||||
{
|
{
|
||||||
m_host.AddScriptLPS(1);
|
m_host.AddScriptLPS(1);
|
||||||
m_host.AdjustSoundGain(volume);
|
m_host.AdjustSoundGain(volume);
|
||||||
ConditionalScriptSleep(100);
|
ScriptSleep(100);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void llSetSoundQueueing(int queue)
|
public void llSetSoundQueueing(int queue)
|
||||||
|
@ -5459,7 +5452,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
|
||||||
World.TeleportClientHome(agentId, presence.ControllingClient);
|
World.TeleportClientHome(agentId, presence.ControllingClient);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
ConditionalScriptSleep(5000);
|
ScriptSleep(5000);
|
||||||
}
|
}
|
||||||
|
|
||||||
public LSL_List llParseString2List(string str, LSL_List separators, LSL_List in_spacers)
|
public LSL_List llParseString2List(string str, LSL_List separators, LSL_List in_spacers)
|
||||||
|
@ -6151,7 +6144,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
|
||||||
land.ParcelAccessList.Add(entry);
|
land.ParcelAccessList.Add(entry);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
ConditionalScriptSleep(100);
|
ScriptSleep(100);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void llSetTouchText(string text)
|
public void llSetTouchText(string text)
|
||||||
|
@ -6248,7 +6241,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
|
||||||
av, m_host.Name, m_host.UUID, m_host.OwnerID,
|
av, m_host.Name, m_host.UUID, m_host.OwnerID,
|
||||||
message, new UUID("00000000-0000-2222-3333-100000001000"), chat_channel, buts);
|
message, new UUID("00000000-0000-2222-3333-100000001000"), chat_channel, buts);
|
||||||
|
|
||||||
ConditionalScriptSleep(1000);
|
ScriptSleep(1000);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void llVolumeDetect(int detect)
|
public void llVolumeDetect(int detect)
|
||||||
|
@ -6273,7 +6266,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
|
||||||
m_host.AddScriptLPS(1);
|
m_host.AddScriptLPS(1);
|
||||||
// Report an error as it does in SL
|
// Report an error as it does in SL
|
||||||
ShoutError("Deprecated. Please use llRemoteLoadScriptPin instead.");
|
ShoutError("Deprecated. Please use llRemoteLoadScriptPin instead.");
|
||||||
ConditionalScriptSleep(3000);
|
ScriptSleep(3000);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void llSetRemoteScriptAccessPin(int pin)
|
public void llSetRemoteScriptAccessPin(int pin)
|
||||||
|
@ -6359,14 +6352,14 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
|
||||||
m_ScriptEngine.PostScriptEvent(m_itemID, new EventParams("remote_data", resobj,
|
m_ScriptEngine.PostScriptEvent(m_itemID, new EventParams("remote_data", resobj,
|
||||||
new DetectParams[0]));
|
new DetectParams[0]));
|
||||||
}
|
}
|
||||||
ConditionalScriptSleep(1000);
|
ScriptSleep(1000);
|
||||||
}
|
}
|
||||||
|
|
||||||
public LSL_String llSendRemoteData(string channel, string dest, int idata, string sdata)
|
public LSL_String llSendRemoteData(string channel, string dest, int idata, string sdata)
|
||||||
{
|
{
|
||||||
m_host.AddScriptLPS(1);
|
m_host.AddScriptLPS(1);
|
||||||
IXMLRPC xmlrpcMod = m_ScriptEngine.World.RequestModuleInterface<IXMLRPC>();
|
IXMLRPC xmlrpcMod = m_ScriptEngine.World.RequestModuleInterface<IXMLRPC>();
|
||||||
ConditionalScriptSleep(3000);
|
ScriptSleep(3000);
|
||||||
return (xmlrpcMod.SendRemoteData(m_localID, m_itemID, channel, dest, idata, sdata)).ToString();
|
return (xmlrpcMod.SendRemoteData(m_localID, m_itemID, channel, dest, idata, sdata)).ToString();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -6375,7 +6368,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
|
||||||
m_host.AddScriptLPS(1);
|
m_host.AddScriptLPS(1);
|
||||||
IXMLRPC xmlrpcMod = m_ScriptEngine.World.RequestModuleInterface<IXMLRPC>();
|
IXMLRPC xmlrpcMod = m_ScriptEngine.World.RequestModuleInterface<IXMLRPC>();
|
||||||
xmlrpcMod.RemoteDataReply(channel, message_id, sdata, idata);
|
xmlrpcMod.RemoteDataReply(channel, message_id, sdata, idata);
|
||||||
ConditionalScriptSleep(3000);
|
ScriptSleep(3000);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void llCloseRemoteDataChannel(string channel)
|
public void llCloseRemoteDataChannel(string channel)
|
||||||
|
@ -6383,7 +6376,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
|
||||||
m_host.AddScriptLPS(1);
|
m_host.AddScriptLPS(1);
|
||||||
IXMLRPC xmlrpcMod = m_ScriptEngine.World.RequestModuleInterface<IXMLRPC>();
|
IXMLRPC xmlrpcMod = m_ScriptEngine.World.RequestModuleInterface<IXMLRPC>();
|
||||||
xmlrpcMod.CloseXMLRPCChannel((UUID)channel);
|
xmlrpcMod.CloseXMLRPCChannel((UUID)channel);
|
||||||
ConditionalScriptSleep(1000);
|
ScriptSleep(1000);
|
||||||
}
|
}
|
||||||
|
|
||||||
public LSL_String llMD5String(string src, int nonce)
|
public LSL_String llMD5String(string src, int nonce)
|
||||||
|
@ -7114,7 +7107,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
|
||||||
{
|
{
|
||||||
m_host.AddScriptLPS(1);
|
m_host.AddScriptLPS(1);
|
||||||
Deprecated("llXorBase64Strings");
|
Deprecated("llXorBase64Strings");
|
||||||
ConditionalScriptSleep(300);
|
ScriptSleep(300);
|
||||||
return String.Empty;
|
return String.Empty;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -7162,7 +7155,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
|
||||||
|
|
||||||
land.SetMusicUrl(url);
|
land.SetMusicUrl(url);
|
||||||
|
|
||||||
ConditionalScriptSleep(2000);
|
ScriptSleep(2000);
|
||||||
}
|
}
|
||||||
|
|
||||||
public LSL_Vector llGetRootPosition()
|
public LSL_Vector llGetRootPosition()
|
||||||
|
@ -8207,7 +8200,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
|
||||||
case 5: // DATA_SIM_POS
|
case 5: // DATA_SIM_POS
|
||||||
if (info == null)
|
if (info == null)
|
||||||
{
|
{
|
||||||
ConditionalScriptSleep(1000);
|
ScriptSleep(1000);
|
||||||
return UUID.Zero.ToString();
|
return UUID.Zero.ToString();
|
||||||
}
|
}
|
||||||
reply = new LSL_Vector(
|
reply = new LSL_Vector(
|
||||||
|
@ -8224,7 +8217,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
|
||||||
case 7: // DATA_SIM_RATING
|
case 7: // DATA_SIM_RATING
|
||||||
if (info == null)
|
if (info == null)
|
||||||
{
|
{
|
||||||
ConditionalScriptSleep(1000);
|
ScriptSleep(1000);
|
||||||
return UUID.Zero.ToString();
|
return UUID.Zero.ToString();
|
||||||
}
|
}
|
||||||
int access = info.Maturity;
|
int access = info.Maturity;
|
||||||
|
@ -8243,7 +8236,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
|
||||||
reply = "OpenSim";
|
reply = "OpenSim";
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
ConditionalScriptSleep(1000);
|
ScriptSleep(1000);
|
||||||
return UUID.Zero.ToString(); // Raise no event
|
return UUID.Zero.ToString(); // Raise no event
|
||||||
}
|
}
|
||||||
UUID rq = UUID.Random();
|
UUID rq = UUID.Random();
|
||||||
|
@ -8254,7 +8247,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
|
||||||
AsyncCommands.
|
AsyncCommands.
|
||||||
DataserverPlugin.DataserverReply(rq.ToString(), reply);
|
DataserverPlugin.DataserverReply(rq.ToString(), reply);
|
||||||
|
|
||||||
ConditionalScriptSleep(1000);
|
ScriptSleep(1000);
|
||||||
return tid.ToString();
|
return tid.ToString();
|
||||||
}
|
}
|
||||||
catch(Exception)
|
catch(Exception)
|
||||||
|
@ -8398,7 +8391,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
|
||||||
dm.SendUrlToUser(
|
dm.SendUrlToUser(
|
||||||
new UUID(avatar_id), m_host.Name, m_host.UUID, m_host.OwnerID, false, message, url);
|
new UUID(avatar_id), m_host.Name, m_host.UUID, m_host.OwnerID, false, message, url);
|
||||||
|
|
||||||
ConditionalScriptSleep(10000);
|
ScriptSleep(10000);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void llParcelMediaCommandList(LSL_List commandList)
|
public void llParcelMediaCommandList(LSL_List commandList)
|
||||||
|
@ -8634,7 +8627,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
|
||||||
time);
|
time);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
ConditionalScriptSleep(2000);
|
ScriptSleep(2000);
|
||||||
}
|
}
|
||||||
|
|
||||||
public LSL_List llParcelMediaQuery(LSL_List aList)
|
public LSL_List llParcelMediaQuery(LSL_List aList)
|
||||||
|
@ -8672,7 +8665,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
ConditionalScriptSleep(2000);
|
ScriptSleep(2000);
|
||||||
return list;
|
return list;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -8681,7 +8674,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
|
||||||
m_host.AddScriptLPS(1);
|
m_host.AddScriptLPS(1);
|
||||||
Int64 tmp = 0;
|
Int64 tmp = 0;
|
||||||
Math.DivRem(Convert.ToInt64(Math.Pow(a, b)), c, out tmp);
|
Math.DivRem(Convert.ToInt64(Math.Pow(a, b)), c, out tmp);
|
||||||
ConditionalScriptSleep(1000);
|
ScriptSleep(1000);
|
||||||
return Convert.ToInt32(tmp);
|
return Convert.ToInt32(tmp);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -8785,7 +8778,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
|
||||||
public void llSetPrimURL(string url)
|
public void llSetPrimURL(string url)
|
||||||
{
|
{
|
||||||
m_host.AddScriptLPS(1);
|
m_host.AddScriptLPS(1);
|
||||||
ConditionalScriptSleep(2000);
|
ScriptSleep(2000);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
@ -8796,7 +8789,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
|
||||||
{
|
{
|
||||||
m_host.AddScriptLPS(1);
|
m_host.AddScriptLPS(1);
|
||||||
ShoutError("llRefreshPrimURL - not yet supported");
|
ShoutError("llRefreshPrimURL - not yet supported");
|
||||||
ConditionalScriptSleep(20000);
|
ScriptSleep(20000);
|
||||||
}
|
}
|
||||||
|
|
||||||
public LSL_String llEscapeURL(string url)
|
public LSL_String llEscapeURL(string url)
|
||||||
|
@ -8838,7 +8831,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
|
||||||
new Vector3((float)pos.x, (float)pos.y, (float)pos.z),
|
new Vector3((float)pos.x, (float)pos.y, (float)pos.z),
|
||||||
new Vector3((float)lookAt.x, (float)lookAt.y, (float)lookAt.z));
|
new Vector3((float)lookAt.x, (float)lookAt.y, (float)lookAt.z));
|
||||||
}
|
}
|
||||||
ConditionalScriptSleep(1000);
|
ScriptSleep(1000);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void llAddToLandBanList(string avatar, double hours)
|
public void llAddToLandBanList(string avatar, double hours)
|
||||||
|
@ -8857,7 +8850,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
|
||||||
land.ParcelAccessList.Add(entry);
|
land.ParcelAccessList.Add(entry);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
ConditionalScriptSleep(100);
|
ScriptSleep(100);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void llRemoveFromLandPassList(string avatar)
|
public void llRemoveFromLandPassList(string avatar)
|
||||||
|
@ -8879,7 +8872,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
ConditionalScriptSleep(100);
|
ScriptSleep(100);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void llRemoveFromLandBanList(string avatar)
|
public void llRemoveFromLandBanList(string avatar)
|
||||||
|
@ -8901,7 +8894,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
ConditionalScriptSleep(100);
|
ScriptSleep(100);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void llSetCameraParams(LSL_List rules)
|
public void llSetCameraParams(LSL_List rules)
|
||||||
|
@ -9163,7 +9156,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
ConditionalScriptSleep(100);
|
ScriptSleep(100);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void llResetLandPassList()
|
public void llResetLandPassList()
|
||||||
|
@ -9180,7 +9173,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
ConditionalScriptSleep(100);
|
ScriptSleep(100);
|
||||||
}
|
}
|
||||||
|
|
||||||
public LSL_Integer llGetParcelPrimCount(LSL_Vector pos, int category, int sim_wide)
|
public LSL_Integer llGetParcelPrimCount(LSL_Vector pos, int category, int sim_wide)
|
||||||
|
@ -9259,7 +9252,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
|
||||||
ret.Add(detectedParams.Value);
|
ret.Add(detectedParams.Value);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
ConditionalScriptSleep(2000);
|
ScriptSleep(2000);
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -9517,7 +9510,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
|
||||||
AsyncCommands.
|
AsyncCommands.
|
||||||
DataserverPlugin.DataserverReply(assetID.ToString(),
|
DataserverPlugin.DataserverReply(assetID.ToString(),
|
||||||
NotecardCache.GetLines(assetID).ToString());
|
NotecardCache.GetLines(assetID).ToString());
|
||||||
ConditionalScriptSleep(100);
|
ScriptSleep(100);
|
||||||
return tid.ToString();
|
return tid.ToString();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -9539,7 +9532,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
|
||||||
NotecardCache.GetLines(id).ToString());
|
NotecardCache.GetLines(id).ToString());
|
||||||
});
|
});
|
||||||
|
|
||||||
ConditionalScriptSleep(100);
|
ScriptSleep(100);
|
||||||
return tid.ToString();
|
return tid.ToString();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -9578,7 +9571,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
|
||||||
{
|
{
|
||||||
AsyncCommands.DataserverPlugin.DataserverReply(assetID.ToString(),
|
AsyncCommands.DataserverPlugin.DataserverReply(assetID.ToString(),
|
||||||
NotecardCache.GetLine(assetID, line, m_notecardLineReadCharsMax));
|
NotecardCache.GetLine(assetID, line, m_notecardLineReadCharsMax));
|
||||||
ConditionalScriptSleep(100);
|
ScriptSleep(100);
|
||||||
return tid.ToString();
|
return tid.ToString();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -9599,7 +9592,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
|
||||||
NotecardCache.GetLine(id, line, m_notecardLineReadCharsMax));
|
NotecardCache.GetLine(id, line, m_notecardLineReadCharsMax));
|
||||||
});
|
});
|
||||||
|
|
||||||
ConditionalScriptSleep(100);
|
ScriptSleep(100);
|
||||||
return tid.ToString();
|
return tid.ToString();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -39,7 +39,7 @@
|
||||||
; Sets the method that OpenSim will use to fire asynchronous
|
; Sets the method that OpenSim will use to fire asynchronous
|
||||||
; events. Valid values are UnsafeQueueUserWorkItem,
|
; events. Valid values are UnsafeQueueUserWorkItem,
|
||||||
; QueueUserWorkItem, BeginInvoke, SmartThreadPool, and Thread
|
; QueueUserWorkItem, BeginInvoke, SmartThreadPool, and Thread
|
||||||
async_call_method = UnsafeQueueUserWorkItem
|
; async_call_method = SmartThreadPool
|
||||||
|
|
||||||
; ##
|
; ##
|
||||||
; ## CLIENTS
|
; ## CLIENTS
|
||||||
|
@ -51,6 +51,9 @@
|
||||||
; Set this to the DLL containing the client stack to use.
|
; Set this to the DLL containing the client stack to use.
|
||||||
clientstack_plugin="OpenSim.Region.ClientStack.LindenUDP.dll"
|
clientstack_plugin="OpenSim.Region.ClientStack.LindenUDP.dll"
|
||||||
|
|
||||||
|
; Max threads to allocate on the FireAndForget pool
|
||||||
|
MaxPoolThreads = 15
|
||||||
|
|
||||||
; ##
|
; ##
|
||||||
; ## REGIONS
|
; ## REGIONS
|
||||||
; ##
|
; ##
|
||||||
|
|
45
prebuild.xml
45
prebuild.xml
|
@ -117,6 +117,28 @@
|
||||||
</Files>
|
</Files>
|
||||||
</Project>
|
</Project>
|
||||||
|
|
||||||
|
<Project frameworkVersion="v3_5" name="SmartThreadPool" path="ThirdParty/SmartThreadPool" type="Library">
|
||||||
|
<Configuration name="Debug">
|
||||||
|
<Options>
|
||||||
|
<OutputPath>../../bin/</OutputPath>
|
||||||
|
</Options>
|
||||||
|
</Configuration>
|
||||||
|
<Configuration name="Release">
|
||||||
|
<Options>
|
||||||
|
<OutputPath>../../bin/</OutputPath>
|
||||||
|
</Options>
|
||||||
|
</Configuration>
|
||||||
|
|
||||||
|
<ReferencePath>../../bin/</ReferencePath>
|
||||||
|
<Reference name="System"/>
|
||||||
|
<Reference name="System.Xml"/>
|
||||||
|
<Reference name="System.Data"/>
|
||||||
|
<Reference name="System.Web"/>
|
||||||
|
<Files>
|
||||||
|
<Match pattern="*.cs" recurse="false"/>
|
||||||
|
</Files>
|
||||||
|
</Project>
|
||||||
|
|
||||||
<Project frameworkVersion="v3_5" name="OpenSim.Framework" path="OpenSim/Framework" type="Library">
|
<Project frameworkVersion="v3_5" name="OpenSim.Framework" path="OpenSim/Framework" type="Library">
|
||||||
<Configuration name="Debug">
|
<Configuration name="Debug">
|
||||||
<Options>
|
<Options>
|
||||||
|
@ -145,6 +167,7 @@
|
||||||
<Reference name="Nini.dll" />
|
<Reference name="Nini.dll" />
|
||||||
<Reference name="log4net.dll"/>
|
<Reference name="log4net.dll"/>
|
||||||
<Reference name="Mono.Addins.dll" />
|
<Reference name="Mono.Addins.dll" />
|
||||||
|
<Reference name="SmartThreadPool" />
|
||||||
<Files>
|
<Files>
|
||||||
<Match pattern="*.cs" recurse="false"/>
|
<Match pattern="*.cs" recurse="false"/>
|
||||||
<Match path="Client" pattern="*.cs" recurse="true"/>
|
<Match path="Client" pattern="*.cs" recurse="true"/>
|
||||||
|
@ -2387,28 +2410,6 @@
|
||||||
</Files>
|
</Files>
|
||||||
</Project>
|
</Project>
|
||||||
|
|
||||||
<Project frameworkVersion="v3_5" name="SmartThreadPool" path="ThirdParty/SmartThreadPool" type="Library">
|
|
||||||
<Configuration name="Debug">
|
|
||||||
<Options>
|
|
||||||
<OutputPath>../../bin/</OutputPath>
|
|
||||||
</Options>
|
|
||||||
</Configuration>
|
|
||||||
<Configuration name="Release">
|
|
||||||
<Options>
|
|
||||||
<OutputPath>../../bin/</OutputPath>
|
|
||||||
</Options>
|
|
||||||
</Configuration>
|
|
||||||
|
|
||||||
<ReferencePath>../../bin/</ReferencePath>
|
|
||||||
<Reference name="System"/>
|
|
||||||
<Reference name="System.Xml"/>
|
|
||||||
<Reference name="System.Data"/>
|
|
||||||
<Reference name="System.Web"/>
|
|
||||||
<Files>
|
|
||||||
<Match pattern="*.cs" recurse="false"/>
|
|
||||||
</Files>
|
|
||||||
</Project>
|
|
||||||
|
|
||||||
<Project frameworkVersion="v3_5" name="OpenSim.Region.ScriptEngine.Shared" path="OpenSim/Region/ScriptEngine/Shared" type="Library">
|
<Project frameworkVersion="v3_5" name="OpenSim.Region.ScriptEngine.Shared" path="OpenSim/Region/ScriptEngine/Shared" type="Library">
|
||||||
<Configuration name="Debug">
|
<Configuration name="Debug">
|
||||||
<Options>
|
<Options>
|
||||||
|
|
Loading…
Reference in New Issue