Merge branch 'master' into httptests
commit
84946e3061
|
@ -57,7 +57,8 @@ namespace OpenSim.Framework.Monitoring
|
||||||
/// <remarks>
|
/// <remarks>
|
||||||
/// Will be null if no job is currently running.
|
/// Will be null if no job is currently running.
|
||||||
/// </remarks>
|
/// </remarks>
|
||||||
public Job CurrentJob { get; private set; }
|
private Job m_currentJob;
|
||||||
|
public Job CurrentJob { get { return m_currentJob;} }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Number of jobs waiting to be processed.
|
/// Number of jobs waiting to be processed.
|
||||||
|
@ -82,16 +83,15 @@ namespace OpenSim.Framework.Monitoring
|
||||||
|
|
||||||
private CancellationTokenSource m_cancelSource;
|
private CancellationTokenSource m_cancelSource;
|
||||||
|
|
||||||
/// <summary>
|
private int m_timeout = -1;
|
||||||
/// Used to signal that we are ready to complete stop.
|
|
||||||
/// </summary>
|
|
||||||
private ManualResetEvent m_finishedProcessingAfterStop = new ManualResetEvent(false);
|
|
||||||
|
|
||||||
public JobEngine(string name, string loggingName)
|
private bool m_threadRunnig = false;
|
||||||
|
|
||||||
|
public JobEngine(string name, string loggingName, int timeout = -1)
|
||||||
{
|
{
|
||||||
Name = name;
|
Name = name;
|
||||||
LoggingName = loggingName;
|
LoggingName = loggingName;
|
||||||
|
m_timeout = timeout;
|
||||||
RequestProcessTimeoutOnStop = 5000;
|
RequestProcessTimeoutOnStop = 5000;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -104,18 +104,9 @@ namespace OpenSim.Framework.Monitoring
|
||||||
|
|
||||||
IsRunning = true;
|
IsRunning = true;
|
||||||
|
|
||||||
m_finishedProcessingAfterStop.Reset();
|
|
||||||
|
|
||||||
m_cancelSource = new CancellationTokenSource();
|
m_cancelSource = new CancellationTokenSource();
|
||||||
|
WorkManager.RunInThreadPool(ProcessRequests, null, Name, false);
|
||||||
WorkManager.StartThread(
|
m_threadRunnig = true;
|
||||||
ProcessRequests,
|
|
||||||
Name,
|
|
||||||
ThreadPriority.Normal,
|
|
||||||
false,
|
|
||||||
true,
|
|
||||||
null,
|
|
||||||
int.MaxValue);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -131,20 +122,16 @@ namespace OpenSim.Framework.Monitoring
|
||||||
m_log.DebugFormat("[JobEngine] Stopping {0}", Name);
|
m_log.DebugFormat("[JobEngine] Stopping {0}", Name);
|
||||||
|
|
||||||
IsRunning = false;
|
IsRunning = false;
|
||||||
|
if(m_threadRunnig)
|
||||||
m_finishedProcessingAfterStop.Reset();
|
{
|
||||||
if(m_jobQueue.Count <= 0)
|
|
||||||
m_cancelSource.Cancel();
|
m_cancelSource.Cancel();
|
||||||
|
m_threadRunnig = false;
|
||||||
m_finishedProcessingAfterStop.WaitOne(RequestProcessTimeoutOnStop);
|
}
|
||||||
m_finishedProcessingAfterStop.Close();
|
|
||||||
}
|
}
|
||||||
finally
|
finally
|
||||||
{
|
{
|
||||||
if(m_cancelSource != null)
|
if(m_cancelSource != null)
|
||||||
m_cancelSource.Dispose();
|
m_cancelSource.Dispose();
|
||||||
if(m_finishedProcessingAfterStop != null)
|
|
||||||
m_finishedProcessingAfterStop.Dispose();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -203,6 +190,18 @@ namespace OpenSim.Framework.Monitoring
|
||||||
/// </param>
|
/// </param>
|
||||||
public bool QueueJob(Job job)
|
public bool QueueJob(Job job)
|
||||||
{
|
{
|
||||||
|
lock(JobLock)
|
||||||
|
{
|
||||||
|
if(!IsRunning)
|
||||||
|
return false;
|
||||||
|
|
||||||
|
if(!m_threadRunnig)
|
||||||
|
{
|
||||||
|
WorkManager.RunInThreadPool(ProcessRequests, null, Name, false);
|
||||||
|
m_threadRunnig = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (m_jobQueue.Count < m_jobQueue.BoundedCapacity)
|
if (m_jobQueue.Count < m_jobQueue.BoundedCapacity)
|
||||||
{
|
{
|
||||||
m_jobQueue.Add(job);
|
m_jobQueue.Add(job);
|
||||||
|
@ -222,59 +221,53 @@ namespace OpenSim.Framework.Monitoring
|
||||||
|
|
||||||
m_warnOverMaxQueue = false;
|
m_warnOverMaxQueue = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void ProcessRequests()
|
private void ProcessRequests(Object o)
|
||||||
{
|
{
|
||||||
while(IsRunning || m_jobQueue.Count > 0)
|
while(IsRunning)
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
CurrentJob = m_jobQueue.Take(m_cancelSource.Token);
|
if(!m_jobQueue.TryTake(out m_currentJob, m_timeout, m_cancelSource.Token))
|
||||||
|
{
|
||||||
|
lock(JobLock)
|
||||||
|
m_threadRunnig = false;
|
||||||
|
break;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
catch(ObjectDisposedException e)
|
catch(ObjectDisposedException e)
|
||||||
{
|
|
||||||
// If we see this whilst not running then it may be due to a race where this thread checks
|
|
||||||
// IsRunning after the stopping thread sets it to false and disposes of the cancellation source.
|
|
||||||
if(IsRunning)
|
|
||||||
throw e;
|
|
||||||
else
|
|
||||||
{
|
{
|
||||||
m_log.DebugFormat("[JobEngine] {0} stopping ignoring {1} jobs in queue",
|
m_log.DebugFormat("[JobEngine] {0} stopping ignoring {1} jobs in queue",
|
||||||
Name,m_jobQueue.Count);
|
Name,m_jobQueue.Count);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
|
||||||
catch(OperationCanceledException)
|
catch(OperationCanceledException)
|
||||||
{
|
{
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(LogLevel >= 1)
|
if(LogLevel >= 1)
|
||||||
m_log.DebugFormat("[{0}]: Processing job {1}",LoggingName,CurrentJob.Name);
|
m_log.DebugFormat("[{0}]: Processing job {1}",LoggingName,m_currentJob.Name);
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
CurrentJob.Action();
|
m_currentJob.Action();
|
||||||
}
|
}
|
||||||
catch(Exception e)
|
catch(Exception e)
|
||||||
{
|
{
|
||||||
m_log.Error(
|
m_log.Error(
|
||||||
string.Format(
|
string.Format(
|
||||||
"[{0}]: Job {1} failed, continuing. Exception ",LoggingName,CurrentJob.Name),e);
|
"[{0}]: Job {1} failed, continuing. Exception ",LoggingName,m_currentJob.Name),e);
|
||||||
}
|
}
|
||||||
|
|
||||||
if(LogLevel >= 1)
|
if(LogLevel >= 1)
|
||||||
m_log.DebugFormat("[{0}]: Processed job {1}",LoggingName,CurrentJob.Name);
|
m_log.DebugFormat("[{0}]: Processed job {1}",LoggingName,m_currentJob.Name);
|
||||||
|
|
||||||
CurrentJob = null;
|
m_currentJob = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
Watchdog.RemoveThread(false);
|
|
||||||
m_finishedProcessingAfterStop.Set();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public class Job
|
public class Job
|
||||||
|
|
|
@ -57,7 +57,7 @@ namespace OpenSim.Framework.Monitoring
|
||||||
|
|
||||||
static WorkManager()
|
static WorkManager()
|
||||||
{
|
{
|
||||||
JobEngine = new JobEngine("Non-blocking non-critical job engine", "JOB ENGINE");
|
JobEngine = new JobEngine("Non-blocking non-critical job engine", "JOB ENGINE", 30000);
|
||||||
|
|
||||||
StatsManager.RegisterStat(
|
StatsManager.RegisterStat(
|
||||||
new Stat(
|
new Stat(
|
||||||
|
@ -182,9 +182,9 @@ namespace OpenSim.Framework.Monitoring
|
||||||
/// <param name="callback"></param>
|
/// <param name="callback"></param>
|
||||||
/// <param name="obj"></param>
|
/// <param name="obj"></param>
|
||||||
/// <param name="name">The name of the job. This is used in monitoring and debugging.</param>
|
/// <param name="name">The name of the job. This is used in monitoring and debugging.</param>
|
||||||
public static void RunInThreadPool(System.Threading.WaitCallback callback, object obj, string name)
|
public static void RunInThreadPool(System.Threading.WaitCallback callback, object obj, string name, bool timeout = true)
|
||||||
{
|
{
|
||||||
Util.FireAndForget(callback, obj, name);
|
Util.FireAndForget(callback, obj, name, timeout);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
@ -231,10 +231,8 @@ namespace OpenSim.Framework.Monitoring
|
||||||
JobEngine.QueueJob(name, () => callback(obj));
|
JobEngine.QueueJob(name, () => callback(obj));
|
||||||
else if (canRunInThisThread)
|
else if (canRunInThisThread)
|
||||||
callback(obj);
|
callback(obj);
|
||||||
else if (mustNotTimeout)
|
|
||||||
RunInThread(callback, obj, name, log);
|
|
||||||
else
|
else
|
||||||
Util.FireAndForget(callback, obj, name);
|
Util.FireAndForget(callback, obj, name, !mustNotTimeout);
|
||||||
}
|
}
|
||||||
|
|
||||||
private static void HandleControlCommand(string module, string[] args)
|
private static void HandleControlCommand(string module, string[] args)
|
||||||
|
|
|
@ -2492,8 +2492,9 @@ namespace OpenSim.Framework
|
||||||
public bool Running { get; set; }
|
public bool Running { get; set; }
|
||||||
public bool Aborted { get; set; }
|
public bool Aborted { get; set; }
|
||||||
private int started;
|
private int started;
|
||||||
|
public bool DoTimeout;
|
||||||
|
|
||||||
public ThreadInfo(long threadFuncNum, string context)
|
public ThreadInfo(long threadFuncNum, string context, bool dotimeout = true)
|
||||||
{
|
{
|
||||||
ThreadFuncNum = threadFuncNum;
|
ThreadFuncNum = threadFuncNum;
|
||||||
this.context = context;
|
this.context = context;
|
||||||
|
@ -2501,6 +2502,7 @@ namespace OpenSim.Framework
|
||||||
Thread = null;
|
Thread = null;
|
||||||
Running = false;
|
Running = false;
|
||||||
Aborted = false;
|
Aborted = false;
|
||||||
|
DoTimeout = dotimeout;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void Started()
|
public void Started()
|
||||||
|
@ -2571,7 +2573,7 @@ namespace OpenSim.Framework
|
||||||
foreach (KeyValuePair<long, ThreadInfo> entry in activeThreads)
|
foreach (KeyValuePair<long, ThreadInfo> entry in activeThreads)
|
||||||
{
|
{
|
||||||
ThreadInfo t = entry.Value;
|
ThreadInfo t = entry.Value;
|
||||||
if (t.Running && !t.Aborted && (t.Elapsed() >= THREAD_TIMEOUT))
|
if (t.DoTimeout && t.Running && !t.Aborted && (t.Elapsed() >= THREAD_TIMEOUT))
|
||||||
{
|
{
|
||||||
m_log.WarnFormat("Timeout in threadfunc {0} ({1}) {2}", t.ThreadFuncNum, t.Thread.Name, t.GetStackTrace());
|
m_log.WarnFormat("Timeout in threadfunc {0} ({1}) {2}", t.ThreadFuncNum, t.Thread.Name, t.GetStackTrace());
|
||||||
t.Abort();
|
t.Abort();
|
||||||
|
@ -2612,7 +2614,7 @@ namespace OpenSim.Framework
|
||||||
FireAndForget(callback, obj, null);
|
FireAndForget(callback, obj, null);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void FireAndForget(System.Threading.WaitCallback callback, object obj, string context)
|
public static void FireAndForget(System.Threading.WaitCallback callback, object obj, string context, bool dotimeout = true)
|
||||||
{
|
{
|
||||||
Interlocked.Increment(ref numTotalThreadFuncsCalled);
|
Interlocked.Increment(ref numTotalThreadFuncsCalled);
|
||||||
|
|
||||||
|
@ -2634,7 +2636,7 @@ namespace OpenSim.Framework
|
||||||
bool loggingEnabled = LogThreadPool > 0;
|
bool loggingEnabled = LogThreadPool > 0;
|
||||||
|
|
||||||
long threadFuncNum = Interlocked.Increment(ref nextThreadFuncNum);
|
long threadFuncNum = Interlocked.Increment(ref nextThreadFuncNum);
|
||||||
ThreadInfo threadInfo = new ThreadInfo(threadFuncNum, context);
|
ThreadInfo threadInfo = new ThreadInfo(threadFuncNum, context, dotimeout);
|
||||||
|
|
||||||
if (FireAndForgetMethod == FireAndForgetMethod.RegressionTest)
|
if (FireAndForgetMethod == FireAndForgetMethod.RegressionTest)
|
||||||
{
|
{
|
||||||
|
|
|
@ -1262,18 +1262,24 @@ namespace OpenSim.Framework
|
||||||
{
|
{
|
||||||
if (hwr.StatusCode == HttpStatusCode.NotFound)
|
if (hwr.StatusCode == HttpStatusCode.NotFound)
|
||||||
return deserial;
|
return deserial;
|
||||||
|
|
||||||
if (hwr.StatusCode == HttpStatusCode.Unauthorized)
|
if (hwr.StatusCode == HttpStatusCode.Unauthorized)
|
||||||
{
|
{
|
||||||
m_log.Error(string.Format(
|
m_log.ErrorFormat("[SynchronousRestObjectRequester]: Web request {0} requires authentication",
|
||||||
"[SynchronousRestObjectRequester]: Web request {0} requires authentication ",
|
requestUrl);
|
||||||
requestUrl));
|
}
|
||||||
return deserial;
|
else
|
||||||
|
{
|
||||||
|
m_log.WarnFormat("[SynchronousRestObjectRequester]: Web request {0} returned error: {1}",
|
||||||
|
requestUrl, hwr.StatusCode);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
m_log.Error(string.Format(
|
m_log.ErrorFormat(
|
||||||
"[SynchronousRestObjectRequester]: WebException for {0} {1} {2} ",
|
"[SynchronousRestObjectRequester]: WebException for {0} {1} {2} {3}",
|
||||||
verb, requestUrl, typeof(TResponse).ToString()), e);
|
verb, requestUrl, typeof(TResponse).ToString(), e.Message);
|
||||||
|
|
||||||
|
return deserial;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
catch (System.InvalidOperationException)
|
catch (System.InvalidOperationException)
|
||||||
|
|
|
@ -325,6 +325,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public LLImageManager ImageManager { get; private set; }
|
public LLImageManager ImageManager { get; private set; }
|
||||||
|
|
||||||
|
public JobEngine m_asyncPacketProcess;
|
||||||
private readonly LLUDPServer m_udpServer;
|
private readonly LLUDPServer m_udpServer;
|
||||||
private readonly LLUDPClient m_udpClient;
|
private readonly LLUDPClient m_udpClient;
|
||||||
private readonly UUID m_sessionId;
|
private readonly UUID m_sessionId;
|
||||||
|
@ -378,7 +379,6 @@ namespace OpenSim.Region.ClientStack.LindenUDP
|
||||||
protected Scene m_scene;
|
protected Scene m_scene;
|
||||||
protected string m_firstName;
|
protected string m_firstName;
|
||||||
protected string m_lastName;
|
protected string m_lastName;
|
||||||
protected Thread m_clientThread;
|
|
||||||
protected Vector3 m_startpos;
|
protected Vector3 m_startpos;
|
||||||
protected UUID m_activeGroupID;
|
protected UUID m_activeGroupID;
|
||||||
protected string m_activeGroupName = String.Empty;
|
protected string m_activeGroupName = String.Empty;
|
||||||
|
@ -529,7 +529,8 @@ namespace OpenSim.Region.ClientStack.LindenUDP
|
||||||
m_prioritizer = new Prioritizer(m_scene);
|
m_prioritizer = new Prioritizer(m_scene);
|
||||||
|
|
||||||
RegisterLocalPacketHandlers();
|
RegisterLocalPacketHandlers();
|
||||||
|
string name = string.Format("AsyncInUDP-{0}",m_agentId.ToString());
|
||||||
|
m_asyncPacketProcess = new JobEngine(name, name, 10000);
|
||||||
IsActive = true;
|
IsActive = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -592,6 +593,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
|
||||||
if (OnConnectionClosed != null)
|
if (OnConnectionClosed != null)
|
||||||
OnConnectionClosed(this);
|
OnConnectionClosed(this);
|
||||||
|
|
||||||
|
m_asyncPacketProcess.Stop();
|
||||||
|
|
||||||
// Flush all of the packets out of the UDP server for this client
|
// Flush all of the packets out of the UDP server for this client
|
||||||
if (m_udpServer != null)
|
if (m_udpServer != null)
|
||||||
|
@ -778,12 +780,13 @@ namespace OpenSim.Region.ClientStack.LindenUDP
|
||||||
cinfo.AsyncRequests[packet.Type.ToString()]++;
|
cinfo.AsyncRequests[packet.Type.ToString()]++;
|
||||||
|
|
||||||
object obj = new AsyncPacketProcess(this, pprocessor.method, packet);
|
object obj = new AsyncPacketProcess(this, pprocessor.method, packet);
|
||||||
|
/*
|
||||||
if (pprocessor.InEngine)
|
if (pprocessor.InEngine)
|
||||||
m_udpServer.IpahEngine.QueueJob(packet.Type.ToString(), () => ProcessSpecificPacketAsync(obj));
|
m_udpServer.IpahEngine.QueueJob(packet.Type.ToString(), () => ProcessSpecificPacketAsync(obj));
|
||||||
else
|
else
|
||||||
Util.FireAndForget(ProcessSpecificPacketAsync, obj, packet.Type.ToString());
|
Util.FireAndForget(ProcessSpecificPacketAsync, obj, packet.Type.ToString());
|
||||||
|
*/
|
||||||
|
m_asyncPacketProcess.QueueJob(packet.Type.ToString(), () => ProcessSpecificPacketAsync(obj));
|
||||||
result = true;
|
result = true;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
@ -841,6 +844,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
|
||||||
|
|
||||||
public virtual void Start()
|
public virtual void Start()
|
||||||
{
|
{
|
||||||
|
m_asyncPacketProcess.Start();
|
||||||
m_scene.AddNewAgent(this, PresenceType.User);
|
m_scene.AddNewAgent(this, PresenceType.User);
|
||||||
|
|
||||||
// RefreshGroupMembership();
|
// RefreshGroupMembership();
|
||||||
|
@ -6036,8 +6040,8 @@ namespace OpenSim.Region.ClientStack.LindenUDP
|
||||||
AddLocalPacketHandler(PacketType.ObjectExtraParams, HandleObjectExtraParams);
|
AddLocalPacketHandler(PacketType.ObjectExtraParams, HandleObjectExtraParams);
|
||||||
AddLocalPacketHandler(PacketType.ObjectDuplicate, HandleObjectDuplicate);
|
AddLocalPacketHandler(PacketType.ObjectDuplicate, HandleObjectDuplicate);
|
||||||
AddLocalPacketHandler(PacketType.RequestMultipleObjects, HandleRequestMultipleObjects);
|
AddLocalPacketHandler(PacketType.RequestMultipleObjects, HandleRequestMultipleObjects);
|
||||||
AddLocalPacketHandler(PacketType.ObjectSelect, HandleObjectSelect);
|
AddLocalPacketHandler(PacketType.ObjectSelect, HandleObjectSelect, true, true);
|
||||||
AddLocalPacketHandler(PacketType.ObjectDeselect, HandleObjectDeselect);
|
AddLocalPacketHandler(PacketType.ObjectDeselect, HandleObjectDeselect, true, true);
|
||||||
AddLocalPacketHandler(PacketType.ObjectPosition, HandleObjectPosition);
|
AddLocalPacketHandler(PacketType.ObjectPosition, HandleObjectPosition);
|
||||||
AddLocalPacketHandler(PacketType.ObjectScale, HandleObjectScale);
|
AddLocalPacketHandler(PacketType.ObjectScale, HandleObjectScale);
|
||||||
AddLocalPacketHandler(PacketType.ObjectRotation, HandleObjectRotation);
|
AddLocalPacketHandler(PacketType.ObjectRotation, HandleObjectRotation);
|
||||||
|
@ -8030,19 +8034,41 @@ namespace OpenSim.Region.ClientStack.LindenUDP
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Dictionary<uint, uint> objImageSeqs = null;
|
||||||
|
double lastobjImageSeqsMS = 0.0;
|
||||||
|
|
||||||
private bool HandleObjectImage(IClientAPI sender, Packet Pack)
|
private bool HandleObjectImage(IClientAPI sender, Packet Pack)
|
||||||
{
|
{
|
||||||
ObjectImagePacket imagePack = (ObjectImagePacket)Pack;
|
ObjectImagePacket imagePack = (ObjectImagePacket)Pack;
|
||||||
|
|
||||||
UpdatePrimTexture handlerUpdatePrimTexture = null;
|
UpdatePrimTexture handlerUpdatePrimTexture = OnUpdatePrimTexture;
|
||||||
|
if (handlerUpdatePrimTexture == null)
|
||||||
|
return true;
|
||||||
|
|
||||||
|
double now = Util.GetTimeStampMS();
|
||||||
|
if(objImageSeqs == null || ( now - lastobjImageSeqsMS > 30000.0))
|
||||||
|
{
|
||||||
|
objImageSeqs = null; // yeah i know superstition...
|
||||||
|
objImageSeqs = new Dictionary<uint, uint>(16);
|
||||||
|
}
|
||||||
|
|
||||||
|
lastobjImageSeqsMS = now;
|
||||||
|
uint seq = Pack.Header.Sequence;
|
||||||
|
uint id;
|
||||||
|
uint lastseq;
|
||||||
|
|
||||||
|
ObjectImagePacket.ObjectDataBlock o;
|
||||||
for (int i = 0; i < imagePack.ObjectData.Length; i++)
|
for (int i = 0; i < imagePack.ObjectData.Length; i++)
|
||||||
{
|
{
|
||||||
handlerUpdatePrimTexture = OnUpdatePrimTexture;
|
o = imagePack.ObjectData[i];
|
||||||
if (handlerUpdatePrimTexture != null)
|
id = o.ObjectLocalID;
|
||||||
|
if(objImageSeqs.TryGetValue(id, out lastseq))
|
||||||
{
|
{
|
||||||
handlerUpdatePrimTexture(imagePack.ObjectData[i].ObjectLocalID,
|
if(seq <= lastseq)
|
||||||
imagePack.ObjectData[i].TextureEntry, this);
|
continue;
|
||||||
}
|
}
|
||||||
|
objImageSeqs[id] = seq;
|
||||||
|
handlerUpdatePrimTexture(id, o.TextureEntry, this);
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
|
@ -312,9 +312,6 @@ namespace OpenSim.Region.ClientStack.LindenUDP
|
||||||
/// stack. Use zero to leave this value as the default</summary>
|
/// stack. Use zero to leave this value as the default</summary>
|
||||||
protected int m_recvBufferSize;
|
protected int m_recvBufferSize;
|
||||||
|
|
||||||
/// <summary>Flag to process packets asynchronously or synchronously</summary>
|
|
||||||
protected bool m_asyncPacketHandling;
|
|
||||||
|
|
||||||
/// <summary>Tracks whether or not a packet was sent each round so we know
|
/// <summary>Tracks whether or not a packet was sent each round so we know
|
||||||
/// whether or not to sleep</summary>
|
/// whether or not to sleep</summary>
|
||||||
protected bool m_packetSent;
|
protected bool m_packetSent;
|
||||||
|
@ -417,7 +414,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
|
||||||
/// Queue some low priority but potentially high volume async requests so that they don't overwhelm available
|
/// Queue some low priority but potentially high volume async requests so that they don't overwhelm available
|
||||||
/// threadpool threads.
|
/// threadpool threads.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public JobEngine IpahEngine { get; protected set; }
|
// public JobEngine IpahEngine { get; protected set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Run queue empty processing within a single persistent thread.
|
/// Run queue empty processing within a single persistent thread.
|
||||||
|
@ -473,7 +470,6 @@ namespace OpenSim.Region.ClientStack.LindenUDP
|
||||||
IConfig config = configSource.Configs["ClientStack.LindenUDP"];
|
IConfig config = configSource.Configs["ClientStack.LindenUDP"];
|
||||||
if (config != null)
|
if (config != null)
|
||||||
{
|
{
|
||||||
m_asyncPacketHandling = config.GetBoolean("async_packet_handling", true);
|
|
||||||
m_recvBufferSize = config.GetInt("client_socket_rcvbuf_size", 0);
|
m_recvBufferSize = config.GetInt("client_socket_rcvbuf_size", 0);
|
||||||
sceneThrottleBps = config.GetInt("scene_throttle_max_bps", 0);
|
sceneThrottleBps = config.GetInt("scene_throttle_max_bps", 0);
|
||||||
|
|
||||||
|
@ -531,7 +527,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
|
||||||
{
|
{
|
||||||
StartInbound();
|
StartInbound();
|
||||||
StartOutbound();
|
StartOutbound();
|
||||||
IpahEngine.Start();
|
// IpahEngine.Start();
|
||||||
OqrEngine.Start();
|
OqrEngine.Start();
|
||||||
|
|
||||||
m_elapsedMSSinceLastStatReport = Environment.TickCount;
|
m_elapsedMSSinceLastStatReport = Environment.TickCount;
|
||||||
|
@ -540,10 +536,9 @@ namespace OpenSim.Region.ClientStack.LindenUDP
|
||||||
public void StartInbound()
|
public void StartInbound()
|
||||||
{
|
{
|
||||||
m_log.InfoFormat(
|
m_log.InfoFormat(
|
||||||
"[LLUDPSERVER]: Starting inbound packet processing for the LLUDP server in {0} mode with UsePools = {1}",
|
"[LLUDPSERVER]: Starting inbound packet processing for the LLUDP server");
|
||||||
m_asyncPacketHandling ? "asynchronous" : "synchronous", UsePools);
|
|
||||||
|
|
||||||
base.StartInbound(m_recvBufferSize, m_asyncPacketHandling);
|
base.StartInbound(m_recvBufferSize);
|
||||||
|
|
||||||
// This thread will process the packets received that are placed on the packetInbox
|
// This thread will process the packets received that are placed on the packetInbox
|
||||||
WorkManager.StartThread(
|
WorkManager.StartThread(
|
||||||
|
@ -577,7 +572,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
|
||||||
m_log.Info("[LLUDPSERVER]: Shutting down the LLUDP server for " + Scene.Name);
|
m_log.Info("[LLUDPSERVER]: Shutting down the LLUDP server for " + Scene.Name);
|
||||||
base.StopOutbound();
|
base.StopOutbound();
|
||||||
base.StopInbound();
|
base.StopInbound();
|
||||||
IpahEngine.Stop();
|
// IpahEngine.Stop();
|
||||||
OqrEngine.Stop();
|
OqrEngine.Stop();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -696,12 +691,12 @@ namespace OpenSim.Region.ClientStack.LindenUDP
|
||||||
|
|
||||||
Scene = (Scene)scene;
|
Scene = (Scene)scene;
|
||||||
m_location = new Location(Scene.RegionInfo.RegionHandle);
|
m_location = new Location(Scene.RegionInfo.RegionHandle);
|
||||||
|
/*
|
||||||
IpahEngine
|
IpahEngine
|
||||||
= new JobEngine(
|
= new JobEngine(
|
||||||
string.Format("Incoming Packet Async Handling Engine ({0})", Scene.Name),
|
string.Format("Incoming Packet Async Handling Engine ({0})", Scene.Name),
|
||||||
"INCOMING PACKET ASYNC HANDLING ENGINE");
|
"INCOMING PACKET ASYNC HANDLING ENGINE");
|
||||||
|
*/
|
||||||
OqrEngine
|
OqrEngine
|
||||||
= new JobEngine(
|
= new JobEngine(
|
||||||
string.Format("Outgoing Queue Refill Engine ({0})", Scene.Name),
|
string.Format("Outgoing Queue Refill Engine ({0})", Scene.Name),
|
||||||
|
@ -786,7 +781,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
|
||||||
MeasuresOfInterest.AverageChangeOverTime,
|
MeasuresOfInterest.AverageChangeOverTime,
|
||||||
stat => stat.Value = GetTotalQueuedOutgoingPackets(),
|
stat => stat.Value = GetTotalQueuedOutgoingPackets(),
|
||||||
StatVerbosity.Info));
|
StatVerbosity.Info));
|
||||||
|
/*
|
||||||
StatsManager.RegisterStat(
|
StatsManager.RegisterStat(
|
||||||
new Stat(
|
new Stat(
|
||||||
"IncomingPacketAsyncRequestsWaiting",
|
"IncomingPacketAsyncRequestsWaiting",
|
||||||
|
@ -799,7 +794,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
|
||||||
MeasuresOfInterest.None,
|
MeasuresOfInterest.None,
|
||||||
stat => stat.Value = IpahEngine.JobsWaiting,
|
stat => stat.Value = IpahEngine.JobsWaiting,
|
||||||
StatVerbosity.Debug));
|
StatVerbosity.Debug));
|
||||||
|
*/
|
||||||
StatsManager.RegisterStat(
|
StatsManager.RegisterStat(
|
||||||
new Stat(
|
new Stat(
|
||||||
"OQRERequestsWaiting",
|
"OQRERequestsWaiting",
|
||||||
|
@ -1227,7 +1222,8 @@ namespace OpenSim.Region.ClientStack.LindenUDP
|
||||||
outgoingPacket.SequenceNumber, isReliable, isResend, udpClient.AgentID, Scene.Name);
|
outgoingPacket.SequenceNumber, isReliable, isResend, udpClient.AgentID, Scene.Name);
|
||||||
|
|
||||||
// Put the UDP payload on the wire
|
// Put the UDP payload on the wire
|
||||||
AsyncBeginSend(buffer);
|
// AsyncBeginSend(buffer);
|
||||||
|
SyncSend(buffer);
|
||||||
|
|
||||||
// Keep track of when this packet was sent out (right now)
|
// Keep track of when this packet was sent out (right now)
|
||||||
outgoingPacket.TickCount = Environment.TickCount & Int32.MaxValue;
|
outgoingPacket.TickCount = Environment.TickCount & Int32.MaxValue;
|
||||||
|
@ -1912,7 +1908,8 @@ namespace OpenSim.Region.ClientStack.LindenUDP
|
||||||
|
|
||||||
Buffer.BlockCopy(packetData, 0, buffer.Data, 0, length);
|
Buffer.BlockCopy(packetData, 0, buffer.Data, 0, length);
|
||||||
|
|
||||||
AsyncBeginSend(buffer);
|
// AsyncBeginSend(buffer);
|
||||||
|
SyncSend(buffer);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected bool IsClientAuthorized(UseCircuitCodePacket useCircuitCode, out AuthenticateResponse sessionInfo)
|
protected bool IsClientAuthorized(UseCircuitCodePacket useCircuitCode, out AuthenticateResponse sessionInfo)
|
||||||
|
|
|
@ -57,9 +57,6 @@ namespace OpenMetaverse
|
||||||
/// <summary>UDP socket, used in either client or server mode</summary>
|
/// <summary>UDP socket, used in either client or server mode</summary>
|
||||||
private Socket m_udpSocket;
|
private Socket m_udpSocket;
|
||||||
|
|
||||||
/// <summary>Flag to process packets asynchronously or synchronously</summary>
|
|
||||||
private bool m_asyncPacketHandling;
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Are we to use object pool(s) to reduce memory churn when receiving data?
|
/// Are we to use object pool(s) to reduce memory churn when receiving data?
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
@ -205,10 +202,8 @@ namespace OpenMetaverse
|
||||||
/// manner (not throwing an exception when the remote side resets the
|
/// manner (not throwing an exception when the remote side resets the
|
||||||
/// connection). This call is ignored on Mono where the flag is not
|
/// connection). This call is ignored on Mono where the flag is not
|
||||||
/// necessary</remarks>
|
/// necessary</remarks>
|
||||||
public virtual void StartInbound(int recvBufferSize, bool asyncPacketHandling)
|
public virtual void StartInbound(int recvBufferSize)
|
||||||
{
|
{
|
||||||
m_asyncPacketHandling = asyncPacketHandling;
|
|
||||||
|
|
||||||
if (!IsRunningInbound)
|
if (!IsRunningInbound)
|
||||||
{
|
{
|
||||||
m_log.DebugFormat("[UDPBASE]: Starting inbound UDP loop");
|
m_log.DebugFormat("[UDPBASE]: Starting inbound UDP loop");
|
||||||
|
@ -408,11 +403,6 @@ namespace OpenMetaverse
|
||||||
{
|
{
|
||||||
UdpReceives++;
|
UdpReceives++;
|
||||||
|
|
||||||
// Asynchronous mode will start another receive before the
|
|
||||||
// callback for this packet is even fired. Very parallel :-)
|
|
||||||
if (m_asyncPacketHandling)
|
|
||||||
AsyncBeginReceive();
|
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
// get the buffer that was created in AsyncBeginReceive
|
// get the buffer that was created in AsyncBeginReceive
|
||||||
|
@ -469,9 +459,6 @@ namespace OpenMetaverse
|
||||||
// if (UsePools)
|
// if (UsePools)
|
||||||
// Pool.ReturnObject(buffer);
|
// Pool.ReturnObject(buffer);
|
||||||
|
|
||||||
// Synchronous mode waits until the packet callback completes
|
|
||||||
// before starting the receive to fetch another packet
|
|
||||||
if (!m_asyncPacketHandling)
|
|
||||||
AsyncBeginReceive();
|
AsyncBeginReceive();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -515,5 +502,25 @@ namespace OpenMetaverse
|
||||||
catch (SocketException) { }
|
catch (SocketException) { }
|
||||||
catch (ObjectDisposedException) { }
|
catch (ObjectDisposedException) { }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void SyncSend(UDPPacketBuffer buf)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
m_udpSocket.SendTo(
|
||||||
|
buf.Data,
|
||||||
|
0,
|
||||||
|
buf.DataLength,
|
||||||
|
SocketFlags.None,
|
||||||
|
buf.RemoteEndPoint
|
||||||
|
);
|
||||||
|
UdpSends++;
|
||||||
|
}
|
||||||
|
catch (SocketException e)
|
||||||
|
{
|
||||||
|
m_log.Warn("[UDPBASE]: sync send SocketException {0} " + e.Message);
|
||||||
|
}
|
||||||
|
catch (ObjectDisposedException) { }
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -91,6 +91,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP.Tests
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Test adding a client to the stack
|
/// Test adding a client to the stack
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
/*
|
||||||
[Test]
|
[Test]
|
||||||
public void TestAddClient()
|
public void TestAddClient()
|
||||||
{
|
{
|
||||||
|
@ -165,7 +166,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP.Tests
|
||||||
ScenePresence spAfterAckTimeout = m_scene.GetScenePresence(sp.UUID);
|
ScenePresence spAfterAckTimeout = m_scene.GetScenePresence(sp.UUID);
|
||||||
Assert.That(spAfterAckTimeout, Is.Null);
|
Assert.That(spAfterAckTimeout, Is.Null);
|
||||||
}
|
}
|
||||||
|
*/
|
||||||
// /// <summary>
|
// /// <summary>
|
||||||
// /// Test removing a client from the stack
|
// /// Test removing a client from the stack
|
||||||
// /// </summary>
|
// /// </summary>
|
||||||
|
|
|
@ -163,7 +163,7 @@ namespace OpenSim.Region.CoreModules.Framework.EntityTransfer
|
||||||
m_incomingSceneObjectEngine
|
m_incomingSceneObjectEngine
|
||||||
= new JobEngine(
|
= new JobEngine(
|
||||||
string.Format("HG Incoming Scene Object Engine ({0})", scene.Name),
|
string.Format("HG Incoming Scene Object Engine ({0})", scene.Name),
|
||||||
"HG INCOMING SCENE OBJECT ENGINE");
|
"HG INCOMING SCENE OBJECT ENGINE", 30000);
|
||||||
|
|
||||||
StatsManager.RegisterStat(
|
StatsManager.RegisterStat(
|
||||||
new Stat(
|
new Stat(
|
||||||
|
|
|
@ -2865,7 +2865,7 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
root.SendPropertiesToClient(sp.ControllingClient);
|
root.SendPropertiesToClient(sp.ControllingClient);
|
||||||
if (oldUsePhysics && (root.Flags & PrimFlags.Physics) == 0)
|
if (oldUsePhysics && (root.Flags & PrimFlags.Physics) == 0)
|
||||||
{
|
{
|
||||||
sp.ControllingClient.SendAlertMessage("Object physics canceled");
|
sp.ControllingClient.SendAlertMessage("Object physics cancelled");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1604,13 +1604,16 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
/// <param name="remoteClient"></param>
|
/// <param name="remoteClient"></param>
|
||||||
protected internal void UpdatePrimTexture(uint localID, byte[] texture, IClientAPI remoteClient)
|
protected internal void UpdatePrimTexture(uint localID, byte[] texture, IClientAPI remoteClient)
|
||||||
{
|
{
|
||||||
SceneObjectGroup group = GetGroupByPrim(localID);
|
SceneObjectPart part = GetSceneObjectPart(localID);
|
||||||
|
if(part == null)
|
||||||
|
return;
|
||||||
|
|
||||||
if (group != null)
|
SceneObjectGroup group = part.ParentGroup;
|
||||||
|
if (group != null && !group.IsDeleted)
|
||||||
{
|
{
|
||||||
if (m_parentScene.Permissions.CanEditObject(group, remoteClient))
|
if (m_parentScene.Permissions.CanEditObject(group, remoteClient))
|
||||||
{
|
{
|
||||||
group.UpdateTextureEntry(localID, texture);
|
part.UpdateTextureEntry(texture);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1661,8 +1664,11 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
|
|
||||||
if (wantedPhys != group.UsesPhysics && remoteClient != null)
|
if (wantedPhys != group.UsesPhysics && remoteClient != null)
|
||||||
{
|
{
|
||||||
remoteClient.SendAlertMessage("Object physics canceled because exceeds the limit of " +
|
if(m_parentScene.m_linksetPhysCapacity != 0)
|
||||||
m_parentScene.m_linksetPhysCapacity + " physical prims with shape type not set to None");
|
remoteClient.SendAlertMessage("Object physics cancelled because it exceeds limits for physical prims, either size or number of primswith shape type not set to None");
|
||||||
|
else
|
||||||
|
remoteClient.SendAlertMessage("Object physics cancelled because it exceeds size limits for physical prims");
|
||||||
|
|
||||||
group.RootPart.ScheduleFullUpdate();
|
group.RootPart.ScheduleFullUpdate();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -4129,20 +4129,6 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
return Parts.Count();
|
return Parts.Count();
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Update the texture entry for this part
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="localID"></param>
|
|
||||||
/// <param name="textureEntry"></param>
|
|
||||||
public void UpdateTextureEntry(uint localID, byte[] textureEntry)
|
|
||||||
{
|
|
||||||
SceneObjectPart part = GetPart(localID);
|
|
||||||
if (part != null)
|
|
||||||
{
|
|
||||||
part.UpdateTextureEntry(textureEntry);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public void AdjustChildPrimPermissions(bool forceTaskInventoryPermissive)
|
public void AdjustChildPrimPermissions(bool forceTaskInventoryPermissive)
|
||||||
{
|
{
|
||||||
uint newOwnerMask = (uint)(PermissionMask.All | PermissionMask.Export) & 0xfffffff0; // Mask folded bits
|
uint newOwnerMask = (uint)(PermissionMask.All | PermissionMask.Export) & 0xfffffff0; // Mask folded bits
|
||||||
|
|
|
@ -5016,6 +5016,9 @@ SendFullUpdateToClient(remoteClient, Position) ignores position parameter
|
||||||
if (newTex.FaceTextures[i] != null)
|
if (newTex.FaceTextures[i] != null)
|
||||||
newFace = newTex.FaceTextures[i];
|
newFace = newTex.FaceTextures[i];
|
||||||
|
|
||||||
|
if (oldFace.TextureID != newFace.TextureID)
|
||||||
|
changeFlags |= Changed.TEXTURE;
|
||||||
|
|
||||||
Color4 oldRGBA = oldFace.RGBA;
|
Color4 oldRGBA = oldFace.RGBA;
|
||||||
Color4 newRGBA = newFace.RGBA;
|
Color4 newRGBA = newFace.RGBA;
|
||||||
|
|
||||||
|
@ -5025,9 +5028,6 @@ SendFullUpdateToClient(remoteClient, Position) ignores position parameter
|
||||||
oldRGBA.A != newRGBA.A)
|
oldRGBA.A != newRGBA.A)
|
||||||
changeFlags |= Changed.COLOR;
|
changeFlags |= Changed.COLOR;
|
||||||
|
|
||||||
if (oldFace.TextureID != newFace.TextureID)
|
|
||||||
changeFlags |= Changed.TEXTURE;
|
|
||||||
|
|
||||||
// Max change, skip the rest of testing
|
// Max change, skip the rest of testing
|
||||||
if (changeFlags == (Changed.TEXTURE | Changed.COLOR))
|
if (changeFlags == (Changed.TEXTURE | Changed.COLOR))
|
||||||
break;
|
break;
|
||||||
|
@ -5053,17 +5053,11 @@ SendFullUpdateToClient(remoteClient, Position) ignores position parameter
|
||||||
m_shape.TextureEntry = newTex.GetBytes();
|
m_shape.TextureEntry = newTex.GetBytes();
|
||||||
if (changeFlags != 0)
|
if (changeFlags != 0)
|
||||||
TriggerScriptChangedEvent(changeFlags);
|
TriggerScriptChangedEvent(changeFlags);
|
||||||
UpdateFlag = UpdateRequired.FULL;
|
|
||||||
ParentGroup.HasGroupChanged = true;
|
ParentGroup.HasGroupChanged = true;
|
||||||
|
|
||||||
//This is madness..
|
|
||||||
//ParentGroup.ScheduleGroupForFullUpdate();
|
|
||||||
//This is sparta
|
|
||||||
ScheduleFullUpdate();
|
ScheduleFullUpdate();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
internal void UpdatePhysicsSubscribedEvents()
|
internal void UpdatePhysicsSubscribedEvents()
|
||||||
{
|
{
|
||||||
PhysicsActor pa = PhysActor;
|
PhysicsActor pa = PhysActor;
|
||||||
|
|
|
@ -2280,19 +2280,14 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
m_lastChildAgentUpdateDrawDistance = DrawDistance;
|
m_lastChildAgentUpdateDrawDistance = DrawDistance;
|
||||||
m_lastChildAgentUpdatePosition = AbsolutePosition;
|
m_lastChildAgentUpdatePosition = AbsolutePosition;
|
||||||
m_childUpdatesBusy = false; // allow them
|
m_childUpdatesBusy = false; // allow them
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
m_log.DebugFormat("[CompleteMovement] openChildAgents: {0}ms", Util.EnvironmentTickCountSubtract(ts));
|
m_log.DebugFormat("[CompleteMovement] openChildAgents: {0}ms", Util.EnvironmentTickCountSubtract(ts));
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// send the rest of the world
|
// send the rest of the world
|
||||||
if (m_teleportFlags > 0 && !IsNPC || m_currentParcelHide)
|
if (m_teleportFlags > 0 && !IsNPC || m_currentParcelHide)
|
||||||
SendInitialDataToMe();
|
SendInitialDataToMe();
|
||||||
|
|
||||||
|
|
||||||
// priority uses avatar position only
|
// priority uses avatar position only
|
||||||
// m_reprioritizationLastPosition = AbsolutePosition;
|
// m_reprioritizationLastPosition = AbsolutePosition;
|
||||||
// m_reprioritizationLastDrawDistance = DrawDistance;
|
// m_reprioritizationLastDrawDistance = DrawDistance;
|
||||||
|
@ -2958,31 +2953,32 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
Dir_ControlFlags.DIR_CONTROL_FLAG_DOWN));
|
Dir_ControlFlags.DIR_CONTROL_FLAG_DOWN));
|
||||||
|
|
||||||
MovementFlag &= noMovFlagsMask;
|
MovementFlag &= noMovFlagsMask;
|
||||||
AgentControlFlags &= noMovFlagsMask;
|
uint tmpAgentControlFlags = (uint)m_AgentControlFlags;
|
||||||
|
tmpAgentControlFlags &= noMovFlagsMask;
|
||||||
|
|
||||||
if (LocalVectorToTarget3D.X < 0) //MoveBack
|
if (LocalVectorToTarget3D.X < 0) //MoveBack
|
||||||
{
|
{
|
||||||
MovementFlag |= (uint)Dir_ControlFlags.DIR_CONTROL_FLAG_BACK;
|
MovementFlag |= (uint)Dir_ControlFlags.DIR_CONTROL_FLAG_BACK;
|
||||||
AgentControlFlags |= (uint)Dir_ControlFlags.DIR_CONTROL_FLAG_BACK;
|
tmpAgentControlFlags |= (uint)Dir_ControlFlags.DIR_CONTROL_FLAG_BACK;
|
||||||
updated = true;
|
updated = true;
|
||||||
}
|
}
|
||||||
else if (LocalVectorToTarget3D.X > 0) //Move Forward
|
else if (LocalVectorToTarget3D.X > 0) //Move Forward
|
||||||
{
|
{
|
||||||
MovementFlag |= (uint)Dir_ControlFlags.DIR_CONTROL_FLAG_FORWARD;
|
MovementFlag |= (uint)Dir_ControlFlags.DIR_CONTROL_FLAG_FORWARD;
|
||||||
AgentControlFlags |= (uint)Dir_ControlFlags.DIR_CONTROL_FLAG_FORWARD;
|
tmpAgentControlFlags |= (uint)Dir_ControlFlags.DIR_CONTROL_FLAG_FORWARD;
|
||||||
updated = true;
|
updated = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (LocalVectorToTarget3D.Y > 0) //MoveLeft
|
if (LocalVectorToTarget3D.Y > 0) //MoveLeft
|
||||||
{
|
{
|
||||||
MovementFlag |= (uint)Dir_ControlFlags.DIR_CONTROL_FLAG_LEFT;
|
MovementFlag |= (uint)Dir_ControlFlags.DIR_CONTROL_FLAG_LEFT;
|
||||||
AgentControlFlags |= (uint)Dir_ControlFlags.DIR_CONTROL_FLAG_LEFT;
|
tmpAgentControlFlags |= (uint)Dir_ControlFlags.DIR_CONTROL_FLAG_LEFT;
|
||||||
updated = true;
|
updated = true;
|
||||||
}
|
}
|
||||||
else if (LocalVectorToTarget3D.Y < 0) //MoveRight
|
else if (LocalVectorToTarget3D.Y < 0) //MoveRight
|
||||||
{
|
{
|
||||||
MovementFlag |= (uint)Dir_ControlFlags.DIR_CONTROL_FLAG_RIGHT;
|
MovementFlag |= (uint)Dir_ControlFlags.DIR_CONTROL_FLAG_RIGHT;
|
||||||
AgentControlFlags |= (uint)Dir_ControlFlags.DIR_CONTROL_FLAG_RIGHT;
|
tmpAgentControlFlags |= (uint)Dir_ControlFlags.DIR_CONTROL_FLAG_RIGHT;
|
||||||
updated = true;
|
updated = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -3006,6 +3002,7 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
// "[SCENE PRESENCE]: HandleMoveToTargetUpdate adding {0} to move vector {1} for {2}",
|
// "[SCENE PRESENCE]: HandleMoveToTargetUpdate adding {0} to move vector {1} for {2}",
|
||||||
// LocalVectorToTarget3D, agent_control_v3, Name);
|
// LocalVectorToTarget3D, agent_control_v3, Name);
|
||||||
|
|
||||||
|
m_AgentControlFlags = (AgentManager.ControlFlags) tmpAgentControlFlags;
|
||||||
agent_control_v3 += LocalVectorToTarget3D;
|
agent_control_v3 += LocalVectorToTarget3D;
|
||||||
}
|
}
|
||||||
catch (Exception e)
|
catch (Exception e)
|
||||||
|
@ -4970,8 +4967,8 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
|
|
||||||
// if (m_updateCount > 0)
|
// if (m_updateCount > 0)
|
||||||
// {
|
// {
|
||||||
if (Animator != null && Animator.UpdateMovementAnimations())
|
// if (Animator != null && Animator.UpdateMovementAnimations())
|
||||||
TriggerScenePresenceUpdated();
|
// TriggerScenePresenceUpdated();
|
||||||
// m_updateCount--;
|
// m_updateCount--;
|
||||||
// }
|
// }
|
||||||
|
|
||||||
|
|
|
@ -60,7 +60,7 @@ namespace OpenSim.Region.Framework.Scenes.Tests
|
||||||
TestScene scene = new SceneHelpers().SetupScene();
|
TestScene scene = new SceneHelpers().SetupScene();
|
||||||
ScenePresence sp = SceneHelpers.AddScenePresence(scene, TestHelpers.ParseTail(0x1));
|
ScenePresence sp = SceneHelpers.AddScenePresence(scene, TestHelpers.ParseTail(0x1));
|
||||||
sp.Flying = true;
|
sp.Flying = true;
|
||||||
sp.PhysicsCollisionUpdate(new CollisionEventUpdate());
|
sp.Animator.UpdateMovementAnimations();
|
||||||
|
|
||||||
Assert.That(sp.Animator.CurrentMovementAnimation, Is.EqualTo("HOVER"));
|
Assert.That(sp.Animator.CurrentMovementAnimation, Is.EqualTo("HOVER"));
|
||||||
}
|
}
|
||||||
|
|
|
@ -80,7 +80,7 @@ namespace OpenSim.Region.PhysicsModule.ubOde
|
||||||
public float MeshSculptphysicalLOD = 32;
|
public float MeshSculptphysicalLOD = 32;
|
||||||
|
|
||||||
|
|
||||||
private OpenSim.Framework.BlockingQueue<ODEPhysRepData> createqueue = new OpenSim.Framework.BlockingQueue<ODEPhysRepData>();
|
private OpenSim.Framework.BlockingQueue<ODEPhysRepData> workQueue = new OpenSim.Framework.BlockingQueue<ODEPhysRepData>();
|
||||||
private bool m_running;
|
private bool m_running;
|
||||||
|
|
||||||
private Thread m_thread;
|
private Thread m_thread;
|
||||||
|
@ -110,7 +110,7 @@ namespace OpenSim.Region.PhysicsModule.ubOde
|
||||||
|
|
||||||
while(m_running)
|
while(m_running)
|
||||||
{
|
{
|
||||||
ODEPhysRepData nextRep = createqueue.Dequeue();
|
ODEPhysRepData nextRep = workQueue.Dequeue();
|
||||||
if(!m_running)
|
if(!m_running)
|
||||||
return;
|
return;
|
||||||
if (nextRep == null)
|
if (nextRep == null)
|
||||||
|
@ -139,7 +139,7 @@ namespace OpenSim.Region.PhysicsModule.ubOde
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
m_thread.Abort();
|
m_thread.Abort();
|
||||||
createqueue.Clear();
|
workQueue.Clear();
|
||||||
}
|
}
|
||||||
catch
|
catch
|
||||||
{
|
{
|
||||||
|
@ -196,7 +196,7 @@ namespace OpenSim.Region.PhysicsModule.ubOde
|
||||||
repData.meshState = MeshState.loadingAsset;
|
repData.meshState = MeshState.loadingAsset;
|
||||||
|
|
||||||
repData.comand = meshWorkerCmnds.getmesh;
|
repData.comand = meshWorkerCmnds.getmesh;
|
||||||
createqueue.Enqueue(repData);
|
workQueue.Enqueue(repData);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -242,7 +242,7 @@ namespace OpenSim.Region.PhysicsModule.ubOde
|
||||||
if (needsMeshing(repData)) // no need for pbs now?
|
if (needsMeshing(repData)) // no need for pbs now?
|
||||||
{
|
{
|
||||||
repData.comand = meshWorkerCmnds.changefull;
|
repData.comand = meshWorkerCmnds.changefull;
|
||||||
createqueue.Enqueue(repData);
|
workQueue.Enqueue(repData);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
|
|
@ -165,6 +165,7 @@ namespace OpenSim.Region.PhysicsModule.ubOde
|
||||||
|
|
||||||
private float m_density;
|
private float m_density;
|
||||||
private byte m_shapetype;
|
private byte m_shapetype;
|
||||||
|
private byte m_fakeShapetype;
|
||||||
public bool _zeroFlag;
|
public bool _zeroFlag;
|
||||||
private bool m_lastUpdateSent;
|
private bool m_lastUpdateSent;
|
||||||
|
|
||||||
|
@ -420,7 +421,7 @@ namespace OpenSim.Region.PhysicsModule.ubOde
|
||||||
{
|
{
|
||||||
if (value.IsFinite())
|
if (value.IsFinite())
|
||||||
{
|
{
|
||||||
_parent_scene.m_meshWorker.ChangeActorPhysRep(this, _pbs, value, m_shapetype);
|
_parent_scene.m_meshWorker.ChangeActorPhysRep(this, _pbs, value, m_fakeShapetype);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -630,7 +631,7 @@ namespace OpenSim.Region.PhysicsModule.ubOde
|
||||||
set
|
set
|
||||||
{
|
{
|
||||||
// AddChange(changes.Shape, value);
|
// AddChange(changes.Shape, value);
|
||||||
_parent_scene.m_meshWorker.ChangeActorPhysRep(this, value, _size, m_shapetype);
|
_parent_scene.m_meshWorker.ChangeActorPhysRep(this, value, _size, m_fakeShapetype);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -638,11 +639,11 @@ namespace OpenSim.Region.PhysicsModule.ubOde
|
||||||
{
|
{
|
||||||
get
|
get
|
||||||
{
|
{
|
||||||
return m_shapetype;
|
return m_fakeShapetype;
|
||||||
}
|
}
|
||||||
set
|
set
|
||||||
{
|
{
|
||||||
m_shapetype = value;
|
m_fakeShapetype = value;
|
||||||
_parent_scene.m_meshWorker.ChangeActorPhysRep(this, _pbs, _size, value);
|
_parent_scene.m_meshWorker.ChangeActorPhysRep(this, _pbs, _size, value);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1329,7 +1330,7 @@ namespace OpenSim.Region.PhysicsModule.ubOde
|
||||||
|
|
||||||
_triMeshData = IntPtr.Zero;
|
_triMeshData = IntPtr.Zero;
|
||||||
|
|
||||||
m_shapetype = _shapeType;
|
m_fakeShapetype = _shapeType;
|
||||||
|
|
||||||
m_lastdoneSelected = false;
|
m_lastdoneSelected = false;
|
||||||
m_isSelected = false;
|
m_isSelected = false;
|
||||||
|
@ -1346,7 +1347,7 @@ namespace OpenSim.Region.PhysicsModule.ubOde
|
||||||
AddChange(changes.Add, null);
|
AddChange(changes.Add, null);
|
||||||
|
|
||||||
// get basic mass parameters
|
// get basic mass parameters
|
||||||
ODEPhysRepData repData = _parent_scene.m_meshWorker.NewActorPhysRep(this, _pbs, _size, m_shapetype);
|
ODEPhysRepData repData = _parent_scene.m_meshWorker.NewActorPhysRep(this, _pbs, _size, _shapeType);
|
||||||
|
|
||||||
primVolume = repData.volume;
|
primVolume = repData.volume;
|
||||||
m_OBB = repData.OBB;
|
m_OBB = repData.OBB;
|
||||||
|
@ -3161,7 +3162,6 @@ namespace OpenSim.Region.PhysicsModule.ubOde
|
||||||
{
|
{
|
||||||
_size = repData.size; //??
|
_size = repData.size; //??
|
||||||
_pbs = repData.pbs;
|
_pbs = repData.pbs;
|
||||||
m_shapetype = repData.shapetype;
|
|
||||||
|
|
||||||
m_mesh = repData.mesh;
|
m_mesh = repData.mesh;
|
||||||
|
|
||||||
|
@ -3200,9 +3200,11 @@ namespace OpenSim.Region.PhysicsModule.ubOde
|
||||||
{
|
{
|
||||||
repData.size = _size;
|
repData.size = _size;
|
||||||
repData.pbs = _pbs;
|
repData.pbs = _pbs;
|
||||||
repData.shapetype = m_shapetype;
|
repData.shapetype = m_fakeShapetype;
|
||||||
_parent_scene.m_meshWorker.RequestMesh(repData);
|
_parent_scene.m_meshWorker.RequestMesh(repData);
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
m_shapetype = repData.shapetype;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void changePhysRepData(ODEPhysRepData repData)
|
private void changePhysRepData(ODEPhysRepData repData)
|
||||||
|
@ -3236,7 +3238,6 @@ namespace OpenSim.Region.PhysicsModule.ubOde
|
||||||
|
|
||||||
_size = repData.size;
|
_size = repData.size;
|
||||||
_pbs = repData.pbs;
|
_pbs = repData.pbs;
|
||||||
m_shapetype = repData.shapetype;
|
|
||||||
|
|
||||||
m_mesh = repData.mesh;
|
m_mesh = repData.mesh;
|
||||||
|
|
||||||
|
@ -3287,9 +3288,11 @@ namespace OpenSim.Region.PhysicsModule.ubOde
|
||||||
{
|
{
|
||||||
repData.size = _size;
|
repData.size = _size;
|
||||||
repData.pbs = _pbs;
|
repData.pbs = _pbs;
|
||||||
repData.shapetype = m_shapetype;
|
repData.shapetype = m_fakeShapetype;
|
||||||
_parent_scene.m_meshWorker.RequestMesh(repData);
|
_parent_scene.m_meshWorker.RequestMesh(repData);
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
m_shapetype = repData.shapetype;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void changeFloatOnWater(bool newval)
|
private void changeFloatOnWater(bool newval)
|
||||||
|
|
Binary file not shown.
|
@ -0,0 +1,75 @@
|
||||||
|
<configuration>
|
||||||
|
<configSections>
|
||||||
|
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net" />
|
||||||
|
</configSections>
|
||||||
|
<startup>
|
||||||
|
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/>
|
||||||
|
</startup>
|
||||||
|
<runtime>
|
||||||
|
<loadFromRemoteSources enabled="true" />
|
||||||
|
</runtime>
|
||||||
|
<appSettings>
|
||||||
|
</appSettings>
|
||||||
|
<log4net>
|
||||||
|
<appender name="Console" type="OpenSim.Framework.Console.OpenSimAppender, OpenSim.Framework.Console">
|
||||||
|
<filter type="log4net.Filter.LoggerMatchFilter">
|
||||||
|
<loggerToMatch value="special"/>
|
||||||
|
<acceptOnMatch value="false"/>
|
||||||
|
</filter>
|
||||||
|
<layout type="log4net.Layout.PatternLayout">
|
||||||
|
<conversionPattern value="%date{HH:mm:ss} - %message" />
|
||||||
|
<!-- console log with milliseconds. Useful for debugging -->
|
||||||
|
<!-- <conversionPattern value="%date{HH:mm:ss.fff} - %message" /> -->
|
||||||
|
</layout>
|
||||||
|
</appender>
|
||||||
|
|
||||||
|
<!-- If you want automatic log-rolling then use RollingFileAppender instead of FileAppender:
|
||||||
|
<appender name="LogFileAppender" type="log4net.Appender.RollingFileAppender">
|
||||||
|
<file value="log/OpenSim.log" />
|
||||||
|
<rollingStyle value="Date" />
|
||||||
|
<datePattern value="'.'yyyy-MM-dd"/>
|
||||||
|
...
|
||||||
|
-->
|
||||||
|
|
||||||
|
<appender name="LogFileAppender" type="log4net.Appender.FileAppender">
|
||||||
|
<file value="OpenSim.log" />
|
||||||
|
<appendToFile value="true" />
|
||||||
|
<filter type="log4net.Filter.LoggerMatchFilter">
|
||||||
|
<loggerToMatch value="special"/>
|
||||||
|
<acceptOnMatch value="false"/>
|
||||||
|
</filter>
|
||||||
|
<layout type="log4net.Layout.PatternLayout">
|
||||||
|
<conversionPattern value="%date %-5level - %logger %message%newline" />
|
||||||
|
</layout>
|
||||||
|
</appender>
|
||||||
|
|
||||||
|
<appender name="StatsLogFileAppender" type="log4net.Appender.FileAppender">
|
||||||
|
<file value="OpenSimStats.log"/>
|
||||||
|
<appendToFile value="true" />
|
||||||
|
<layout type="log4net.Layout.PatternLayout">
|
||||||
|
<conversionPattern value="%date - %message%newline" />
|
||||||
|
</layout>
|
||||||
|
</appender>
|
||||||
|
|
||||||
|
<root>
|
||||||
|
<level value="DEBUG" />
|
||||||
|
<appender-ref ref="Console" />
|
||||||
|
<appender-ref ref="LogFileAppender" />
|
||||||
|
</root>
|
||||||
|
|
||||||
|
<!-- Independently control logging level for XEngine -->
|
||||||
|
<logger name="OpenSim.Region.ScriptEngine.XEngine">
|
||||||
|
<level value="INFO"/>
|
||||||
|
</logger>
|
||||||
|
|
||||||
|
<!-- Independently control logging level for per region module loading -->
|
||||||
|
<logger name="OpenSim.ApplicationPlugins.RegionModulesController.RegionModulesControllerPlugin">
|
||||||
|
<level value="INFO"/>
|
||||||
|
</logger>
|
||||||
|
|
||||||
|
<!-- used for stats recording -->
|
||||||
|
<logger name="special.StatsLogger">
|
||||||
|
<appender-ref ref="StatsLogFileAppender"/>
|
||||||
|
</logger>
|
||||||
|
</log4net>
|
||||||
|
</configuration>
|
Binary file not shown.
|
@ -663,14 +663,6 @@
|
||||||
|
|
||||||
|
|
||||||
[ClientStack.LindenUDP]
|
[ClientStack.LindenUDP]
|
||||||
; Set this to true to process incoming packets asynchronously. Networking is
|
|
||||||
; already separated from packet handling with a queue, so this will only
|
|
||||||
; affect whether networking internals such as packet decoding and
|
|
||||||
; acknowledgement accounting are done synchronously or asynchronously
|
|
||||||
; Default is true.
|
|
||||||
;
|
|
||||||
;async_packet_handling = true
|
|
||||||
|
|
||||||
; The client socket receive buffer size determines how many
|
; The client socket receive buffer size determines how many
|
||||||
; incoming requests we can process; the default on .NET is 8192
|
; incoming requests we can process; the default on .NET is 8192
|
||||||
; which is about 2 4k-sized UDP datagrams. On mono this is
|
; which is about 2 4k-sized UDP datagrams. On mono this is
|
||||||
|
|
Binary file not shown.
|
@ -3,12 +3,14 @@
|
||||||
<configSections>
|
<configSections>
|
||||||
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net" />
|
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net" />
|
||||||
</configSections>
|
</configSections>
|
||||||
|
<startup>
|
||||||
|
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0" />
|
||||||
|
</startup>
|
||||||
<runtime>
|
<runtime>
|
||||||
<loadFromRemoteSources enabled="true" />
|
<loadFromRemoteSources enabled="true" />
|
||||||
<gcConcurrent enabled="true" />
|
|
||||||
<gcServer enabled="true" />
|
|
||||||
</runtime>
|
</runtime>
|
||||||
<appSettings>
|
<appSettings>
|
||||||
|
<add key="ClientSettingsProvider.ServiceUri" value="" />
|
||||||
</appSettings>
|
</appSettings>
|
||||||
<log4net>
|
<log4net>
|
||||||
<appender name="Console" type="OpenSim.Framework.Console.OpenSimAppender, OpenSim.Framework.Console">
|
<appender name="Console" type="OpenSim.Framework.Console.OpenSimAppender, OpenSim.Framework.Console">
|
||||||
|
@ -18,21 +20,17 @@
|
||||||
</filter>
|
</filter>
|
||||||
<layout type="log4net.Layout.PatternLayout">
|
<layout type="log4net.Layout.PatternLayout">
|
||||||
<conversionPattern value="%date{HH:mm:ss} - %message" />
|
<conversionPattern value="%date{HH:mm:ss} - %message" />
|
||||||
<!-- console log with milliseconds. Useful for debugging -->
|
|
||||||
<!-- <conversionPattern value="%date{HH:mm:ss.fff} - %message" /> -->
|
|
||||||
</layout>
|
</layout>
|
||||||
</appender>
|
</appender>
|
||||||
|
|
||||||
<!-- If you want automatic log-rolling then use RollingFileAppender instead of FileAppender:
|
<!-- If you want automatic log-rolling then use RollingFileAppender instead of FileAppender:
|
||||||
<appender name="LogFileAppender" type="log4net.Appender.RollingFileAppender">
|
<appender name="LogFileAppender" type="log4net.Appender.RollingFileAppender">
|
||||||
<file value="log/OpenSim.32BitLaunch.log" />
|
<file value="log/Robust.log" />
|
||||||
<rollingStyle value="Date" />
|
<rollingStyle value="Date" />
|
||||||
<datePattern value="'.'yyyy-MM-dd"/>
|
<datePattern value="'.'yyyy-MM-dd"/>
|
||||||
...
|
...
|
||||||
-->
|
-->
|
||||||
|
|
||||||
<appender name="LogFileAppender" type="log4net.Appender.FileAppender">
|
<appender name="LogFileAppender" type="log4net.Appender.FileAppender">
|
||||||
<file value="OpenSim.32BitLaunch.log" />
|
<file value="Robust.log" />
|
||||||
<appendToFile value="true" />
|
<appendToFile value="true" />
|
||||||
<filter type="log4net.Filter.LoggerMatchFilter">
|
<filter type="log4net.Filter.LoggerMatchFilter">
|
||||||
<loggerToMatch value="special" />
|
<loggerToMatch value="special" />
|
||||||
|
@ -42,34 +40,33 @@
|
||||||
<conversionPattern value="%date %-5level - %logger %message%newline" />
|
<conversionPattern value="%date %-5level - %logger %message%newline" />
|
||||||
</layout>
|
</layout>
|
||||||
</appender>
|
</appender>
|
||||||
|
|
||||||
<appender name="StatsLogFileAppender" type="log4net.Appender.FileAppender">
|
<appender name="StatsLogFileAppender" type="log4net.Appender.FileAppender">
|
||||||
<file value="OpenSimStats.log"/>
|
<file value="RobustStats.log" />
|
||||||
<appendToFile value="true" />
|
<appendToFile value="true" />
|
||||||
<layout type="log4net.Layout.PatternLayout">
|
<layout type="log4net.Layout.PatternLayout">
|
||||||
<conversionPattern value="%date - %message%newline" />
|
<conversionPattern value="%date - %message%newline" />
|
||||||
</layout>
|
</layout>
|
||||||
</appender>
|
</appender>
|
||||||
|
|
||||||
<root>
|
<root>
|
||||||
<level value="DEBUG" />
|
<level value="DEBUG" />
|
||||||
<appender-ref ref="Console" />
|
<appender-ref ref="Console" />
|
||||||
<appender-ref ref="LogFileAppender" />
|
<appender-ref ref="LogFileAppender" />
|
||||||
</root>
|
</root>
|
||||||
|
|
||||||
<!-- Independently control logging level for XEngine -->
|
|
||||||
<logger name="OpenSim.Region.ScriptEngine.XEngine">
|
|
||||||
<level value="INFO"/>
|
|
||||||
</logger>
|
|
||||||
|
|
||||||
<!-- Independently control logging level for per region module loading -->
|
|
||||||
<logger name="OpenSim.ApplicationPlugins.RegionModulesController.RegionModulesControllerPlugin">
|
|
||||||
<level value="INFO"/>
|
|
||||||
</logger>
|
|
||||||
|
|
||||||
<!-- used for stats recording -->
|
<!-- used for stats recording -->
|
||||||
<logger name="special.StatsLogger">
|
<logger name="special.StatsLogger">
|
||||||
<appender-ref ref="StatsLogFileAppender" />
|
<appender-ref ref="StatsLogFileAppender" />
|
||||||
</logger>
|
</logger>
|
||||||
</log4net>
|
</log4net>
|
||||||
|
<system.web>
|
||||||
|
<membership defaultProvider="ClientAuthenticationMembershipProvider">
|
||||||
|
<providers>
|
||||||
|
<add name="ClientAuthenticationMembershipProvider" type="System.Web.ClientServices.Providers.ClientFormsAuthenticationMembershipProvider, System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" serviceUri="" />
|
||||||
|
</providers>
|
||||||
|
</membership>
|
||||||
|
<roleManager defaultProvider="ClientRoleProvider" enabled="true">
|
||||||
|
<providers>
|
||||||
|
<add name="ClientRoleProvider" type="System.Web.ClientServices.Providers.ClientRoleProvider, System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" serviceUri="" cacheTimeout="86400" />
|
||||||
|
</providers>
|
||||||
|
</roleManager>
|
||||||
|
</system.web>
|
||||||
</configuration>
|
</configuration>
|
Binary file not shown.
Binary file not shown.
|
@ -3,12 +3,14 @@
|
||||||
<configSections>
|
<configSections>
|
||||||
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net" />
|
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net" />
|
||||||
</configSections>
|
</configSections>
|
||||||
|
<startup>
|
||||||
|
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0" />
|
||||||
|
</startup>
|
||||||
<runtime>
|
<runtime>
|
||||||
<loadFromRemoteSources enabled="true" />
|
<loadFromRemoteSources enabled="true" />
|
||||||
<gcConcurrent enabled="true" />
|
|
||||||
<gcServer enabled="true" />
|
|
||||||
</runtime>
|
</runtime>
|
||||||
<appSettings>
|
<appSettings>
|
||||||
|
<add key="ClientSettingsProvider.ServiceUri" value="" />
|
||||||
</appSettings>
|
</appSettings>
|
||||||
<log4net>
|
<log4net>
|
||||||
<appender name="Console" type="OpenSim.Framework.Console.OpenSimAppender, OpenSim.Framework.Console">
|
<appender name="Console" type="OpenSim.Framework.Console.OpenSimAppender, OpenSim.Framework.Console">
|
||||||
|
@ -20,17 +22,15 @@
|
||||||
<conversionPattern value="%date{HH:mm:ss} - %message" />
|
<conversionPattern value="%date{HH:mm:ss} - %message" />
|
||||||
</layout>
|
</layout>
|
||||||
</appender>
|
</appender>
|
||||||
|
|
||||||
<!-- If you want automatic log-rolling then use RollingFileAppender instead of FileAppender:
|
<!-- If you want automatic log-rolling then use RollingFileAppender instead of FileAppender:
|
||||||
<appender name="LogFileAppender" type="log4net.Appender.RollingFileAppender">
|
<appender name="LogFileAppender" type="log4net.Appender.RollingFileAppender">
|
||||||
<file value="log/Robust.32BitLaunch.log" />
|
<file value="log/Robust.log" />
|
||||||
<rollingStyle value="Date" />
|
<rollingStyle value="Date" />
|
||||||
<datePattern value="'.'yyyy-MM-dd"/>
|
<datePattern value="'.'yyyy-MM-dd"/>
|
||||||
...
|
...
|
||||||
-->
|
-->
|
||||||
|
|
||||||
<appender name="LogFileAppender" type="log4net.Appender.FileAppender">
|
<appender name="LogFileAppender" type="log4net.Appender.FileAppender">
|
||||||
<file value="Robust.32BitLaunch.log" />
|
<file value="Robust.log" />
|
||||||
<appendToFile value="true" />
|
<appendToFile value="true" />
|
||||||
<filter type="log4net.Filter.LoggerMatchFilter">
|
<filter type="log4net.Filter.LoggerMatchFilter">
|
||||||
<loggerToMatch value="special" />
|
<loggerToMatch value="special" />
|
||||||
|
@ -40,7 +40,6 @@
|
||||||
<conversionPattern value="%date %-5level - %logger %message%newline" />
|
<conversionPattern value="%date %-5level - %logger %message%newline" />
|
||||||
</layout>
|
</layout>
|
||||||
</appender>
|
</appender>
|
||||||
|
|
||||||
<appender name="StatsLogFileAppender" type="log4net.Appender.FileAppender">
|
<appender name="StatsLogFileAppender" type="log4net.Appender.FileAppender">
|
||||||
<file value="RobustStats.log" />
|
<file value="RobustStats.log" />
|
||||||
<appendToFile value="true" />
|
<appendToFile value="true" />
|
||||||
|
@ -48,16 +47,26 @@
|
||||||
<conversionPattern value="%date - %message%newline" />
|
<conversionPattern value="%date - %message%newline" />
|
||||||
</layout>
|
</layout>
|
||||||
</appender>
|
</appender>
|
||||||
|
|
||||||
<root>
|
<root>
|
||||||
<level value="DEBUG" />
|
<level value="DEBUG" />
|
||||||
<appender-ref ref="Console" />
|
<appender-ref ref="Console" />
|
||||||
<appender-ref ref="LogFileAppender" />
|
<appender-ref ref="LogFileAppender" />
|
||||||
</root>
|
</root>
|
||||||
|
|
||||||
<!-- used for stats recording -->
|
<!-- used for stats recording -->
|
||||||
<logger name="special.StatsLogger">
|
<logger name="special.StatsLogger">
|
||||||
<appender-ref ref="StatsLogFileAppender" />
|
<appender-ref ref="StatsLogFileAppender" />
|
||||||
</logger>
|
</logger>
|
||||||
</log4net>
|
</log4net>
|
||||||
|
<system.web>
|
||||||
|
<membership defaultProvider="ClientAuthenticationMembershipProvider">
|
||||||
|
<providers>
|
||||||
|
<add name="ClientAuthenticationMembershipProvider" type="System.Web.ClientServices.Providers.ClientFormsAuthenticationMembershipProvider, System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" serviceUri="" />
|
||||||
|
</providers>
|
||||||
|
</membership>
|
||||||
|
<roleManager defaultProvider="ClientRoleProvider" enabled="true">
|
||||||
|
<providers>
|
||||||
|
<add name="ClientRoleProvider" type="System.Web.ClientServices.Providers.ClientRoleProvider, System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" serviceUri="" cacheTimeout="86400" />
|
||||||
|
</providers>
|
||||||
|
</roleManager>
|
||||||
|
</system.web>
|
||||||
</configuration>
|
</configuration>
|
|
@ -1,4 +0,0 @@
|
||||||
#!/bin/sh
|
|
||||||
echo "Starting OpenSimulator with ODE or ubOde. If you get an error saying limit: Operation not permitted. Then you will need to chmod 0600 /etc/limits"
|
|
||||||
ulimit -s 262144
|
|
||||||
mono OpenSim.exe
|
|
|
@ -0,0 +1,5 @@
|
||||||
|
#!/bin/sh
|
||||||
|
ulimit -s 1048576
|
||||||
|
# next option may improve SGen gc (for opensim only) you may also need to increase nursery size on large regions
|
||||||
|
#export MONO_GC_PARAMS="minor=split,promotion-age=14"
|
||||||
|
mono --desktop OpenSim.exe
|
Binary file not shown.
|
@ -0,0 +1,94 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||||
|
<PropertyGroup>
|
||||||
|
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
|
||||||
|
<Platform Condition=" '$(Platform)' == '' ">x86</Platform>
|
||||||
|
<ProjectGuid>{968B4C73-280D-4FF5-9F73-DD3D10160C2E}</ProjectGuid>
|
||||||
|
<OutputType>Exe</OutputType>
|
||||||
|
<NoStandardLibraries>false</NoStandardLibraries>
|
||||||
|
<AssemblyName>OpenSim32</AssemblyName>
|
||||||
|
<TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
|
||||||
|
<TargetFrameworkProfile>
|
||||||
|
</TargetFrameworkProfile>
|
||||||
|
<FileAlignment>512</FileAlignment>
|
||||||
|
<IsWebBootstrapper>false</IsWebBootstrapper>
|
||||||
|
<PublishUrl>publish\</PublishUrl>
|
||||||
|
<Install>true</Install>
|
||||||
|
<InstallFrom>Disk</InstallFrom>
|
||||||
|
<UpdateEnabled>false</UpdateEnabled>
|
||||||
|
<UpdateMode>Foreground</UpdateMode>
|
||||||
|
<UpdateInterval>7</UpdateInterval>
|
||||||
|
<UpdateIntervalUnits>Days</UpdateIntervalUnits>
|
||||||
|
<UpdatePeriodically>false</UpdatePeriodically>
|
||||||
|
<UpdateRequired>false</UpdateRequired>
|
||||||
|
<MapFileExtensions>true</MapFileExtensions>
|
||||||
|
<ApplicationRevision>0</ApplicationRevision>
|
||||||
|
<ApplicationVersion>1.0.0.%2a</ApplicationVersion>
|
||||||
|
<UseApplicationTrust>false</UseApplicationTrust>
|
||||||
|
<BootstrapperEnabled>true</BootstrapperEnabled>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x86' ">
|
||||||
|
<DebugSymbols>true</DebugSymbols>
|
||||||
|
<DebugType>full</DebugType>
|
||||||
|
<Optimize>false</Optimize>
|
||||||
|
<OutputPath>bin\Debug\</OutputPath>
|
||||||
|
<DefineConstants>DEBUG;TRACE</DefineConstants>
|
||||||
|
<ErrorReport>prompt</ErrorReport>
|
||||||
|
<WarningLevel>4</WarningLevel>
|
||||||
|
<PlatformTarget>x86</PlatformTarget>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x86' ">
|
||||||
|
<DebugType>pdbonly</DebugType>
|
||||||
|
<Optimize>true</Optimize>
|
||||||
|
<OutputPath>..\..\..\bin\</OutputPath>
|
||||||
|
<DefineConstants>TRACE</DefineConstants>
|
||||||
|
<ErrorReport>prompt</ErrorReport>
|
||||||
|
<WarningLevel>4</WarningLevel>
|
||||||
|
<PlatformTarget>x86</PlatformTarget>
|
||||||
|
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
|
||||||
|
<UseVSHostingProcess>false</UseVSHostingProcess>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup>
|
||||||
|
<RootNamespace>OpenSim32</RootNamespace>
|
||||||
|
</PropertyGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<Reference Include="log4net">
|
||||||
|
<HintPath>..\..\..\bin\log4net.dll</HintPath>
|
||||||
|
</Reference>
|
||||||
|
<Reference Include="Microsoft.CSharp" />
|
||||||
|
<Reference Include="OpenSim">
|
||||||
|
<HintPath>..\..\..\bin\OpenSim.exe</HintPath>
|
||||||
|
</Reference>
|
||||||
|
<Reference Include="System" />
|
||||||
|
<Reference Include="System.Core" />
|
||||||
|
<Reference Include="System.Data" />
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<Compile Include="Program.cs" />
|
||||||
|
<Compile Include="Properties\AssemblyInfo.cs" />
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<None Include="app.config" />
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<BootstrapperPackage Include=".NETFramework,Version=v4.0">
|
||||||
|
<Visible>False</Visible>
|
||||||
|
<ProductName>Microsoft .NET Framework 4 %28x86 and x64%29</ProductName>
|
||||||
|
<Install>true</Install>
|
||||||
|
</BootstrapperPackage>
|
||||||
|
<BootstrapperPackage Include="Microsoft.Net.Framework.3.5.SP1">
|
||||||
|
<Visible>False</Visible>
|
||||||
|
<ProductName>.NET Framework 3.5 SP1</ProductName>
|
||||||
|
<Install>false</Install>
|
||||||
|
</BootstrapperPackage>
|
||||||
|
<BootstrapperPackage Include="Microsoft.Windows.Installer.4.5">
|
||||||
|
<Visible>False</Visible>
|
||||||
|
<ProductName>Windows Installer 4.5</ProductName>
|
||||||
|
<Install>true</Install>
|
||||||
|
</BootstrapperPackage>
|
||||||
|
</ItemGroup>
|
||||||
|
<Import Project="$(MSBuildToolsPath)\Microsoft.CSHARP.Targets" />
|
||||||
|
<ProjectExtensions>
|
||||||
|
<VisualStudio AllowExistingFolder="true" />
|
||||||
|
</ProjectExtensions>
|
||||||
|
</Project>
|
|
@ -0,0 +1,16 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<Project ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||||
|
<PropertyGroup>
|
||||||
|
<PublishUrlHistory>publish\</PublishUrlHistory>
|
||||||
|
<InstallUrlHistory />
|
||||||
|
<SupportUrlHistory />
|
||||||
|
<UpdateUrlHistory />
|
||||||
|
<BootstrapperUrlHistory />
|
||||||
|
<ErrorReportUrlHistory />
|
||||||
|
<FallbackCulture>en-US</FallbackCulture>
|
||||||
|
<VerifyUploadedFiles>false</VerifyUploadedFiles>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup>
|
||||||
|
<ReferencePath>C:\Avination\testsim\bin\</ReferencePath>
|
||||||
|
</PropertyGroup>
|
||||||
|
</Project>
|
|
@ -0,0 +1,22 @@
|
||||||
|
|
||||||
|
Microsoft Visual Studio Solution File, Format Version 12.00
|
||||||
|
# Visual Studio 14
|
||||||
|
VisualStudioVersion = 14.0.25420.1
|
||||||
|
MinimumVisualStudioVersion = 10.0.40219.1
|
||||||
|
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "OpenSim32", "OpenSim32.csproj", "{968B4C73-280D-4FF5-9F73-DD3D10160C2E}"
|
||||||
|
EndProject
|
||||||
|
Global
|
||||||
|
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||||
|
Debug|x86 = Debug|x86
|
||||||
|
Release|x86 = Release|x86
|
||||||
|
EndGlobalSection
|
||||||
|
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
||||||
|
{968B4C73-280D-4FF5-9F73-DD3D10160C2E}.Debug|x86.ActiveCfg = Release|x86
|
||||||
|
{968B4C73-280D-4FF5-9F73-DD3D10160C2E}.Debug|x86.Build.0 = Release|x86
|
||||||
|
{968B4C73-280D-4FF5-9F73-DD3D10160C2E}.Release|x86.ActiveCfg = Release|x86
|
||||||
|
{968B4C73-280D-4FF5-9F73-DD3D10160C2E}.Release|x86.Build.0 = Release|x86
|
||||||
|
EndGlobalSection
|
||||||
|
GlobalSection(SolutionProperties) = preSolution
|
||||||
|
HideSolutionNode = FALSE
|
||||||
|
EndGlobalSection
|
||||||
|
EndGlobal
|
|
@ -27,33 +27,13 @@
|
||||||
|
|
||||||
using System;
|
using System;
|
||||||
|
|
||||||
namespace OpenSim._32BitLaunch
|
namespace OpenSim32
|
||||||
{
|
{
|
||||||
class Program
|
class Program
|
||||||
{
|
{
|
||||||
static void Main(string[] args)
|
static void Main(string[] args)
|
||||||
{
|
|
||||||
log4net.Config.XmlConfigurator.Configure();
|
|
||||||
|
|
||||||
System.Console.WriteLine("32-bit OpenSim executor");
|
|
||||||
System.Console.WriteLine("-----------------------");
|
|
||||||
System.Console.WriteLine("");
|
|
||||||
System.Console.WriteLine("This application is compiled for 32-bit CPU and will run under WOW32 or similar.");
|
|
||||||
System.Console.WriteLine("All 64-bit incompatibilities should be gone.");
|
|
||||||
System.Console.WriteLine("");
|
|
||||||
System.Threading.Thread.Sleep(300);
|
|
||||||
try
|
|
||||||
{
|
{
|
||||||
global::OpenSim.Application.Main(args);
|
global::OpenSim.Application.Main(args);
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
|
||||||
{
|
|
||||||
System.Console.WriteLine("OpenSim threw an exception:");
|
|
||||||
System.Console.WriteLine(ex.ToString());
|
|
||||||
System.Console.WriteLine("");
|
|
||||||
System.Console.WriteLine("Application will now terminate!");
|
|
||||||
System.Console.WriteLine("");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -32,11 +32,11 @@ using System.Runtime.InteropServices;
|
||||||
// General information about an assembly is controlled through the following
|
// General information about an assembly is controlled through the following
|
||||||
// set of attributes. Change these attribute values to modify the information
|
// set of attributes. Change these attribute values to modify the information
|
||||||
// associated with an assembly.
|
// associated with an assembly.
|
||||||
[assembly: AssemblyTitle("OpenSim.32BitLaunch")]
|
[assembly: AssemblyTitle("OpenSim32")]
|
||||||
[assembly: AssemblyDescription("")]
|
[assembly: AssemblyDescription("OpenSim 32Bit Launcher")]
|
||||||
[assembly: AssemblyConfiguration("")]
|
[assembly: AssemblyConfiguration("")]
|
||||||
[assembly: AssemblyCompany("http://opensimulator.org")]
|
[assembly: AssemblyCompany("http://opensimulator.org")]
|
||||||
[assembly: AssemblyProduct("OpenSim.32BitLaunch")]
|
[assembly: AssemblyProduct("OpenSim 32BitLauncher")]
|
||||||
[assembly: AssemblyCopyright("Copyright (c) 2008")]
|
[assembly: AssemblyCopyright("Copyright (c) 2008")]
|
||||||
[assembly: AssemblyTrademark("")]
|
[assembly: AssemblyTrademark("")]
|
||||||
[assembly: AssemblyCulture("")]
|
[assembly: AssemblyCulture("")]
|
||||||
|
@ -59,5 +59,5 @@ using System.Runtime.InteropServices;
|
||||||
// You can specify all the values or you can default the Build and Revision Numbers
|
// You can specify all the values or you can default the Build and Revision Numbers
|
||||||
// by using the '*' as shown below:
|
// by using the '*' as shown below:
|
||||||
// [assembly: AssemblyVersion("0.6.3.*")]
|
// [assembly: AssemblyVersion("0.6.3.*")]
|
||||||
[assembly: AssemblyVersion("0.6.3.*")]
|
[assembly: AssemblyVersion("0.9.1.*")]
|
||||||
[assembly: AssemblyFileVersion("1.0.0.0")]
|
[assembly: AssemblyFileVersion("1.0.0.0")]
|
||||||
|
|
|
@ -0,0 +1,75 @@
|
||||||
|
<configuration>
|
||||||
|
<configSections>
|
||||||
|
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net" />
|
||||||
|
</configSections>
|
||||||
|
<startup>
|
||||||
|
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/>
|
||||||
|
</startup>
|
||||||
|
<runtime>
|
||||||
|
<loadFromRemoteSources enabled="true" />
|
||||||
|
</runtime>
|
||||||
|
<appSettings>
|
||||||
|
</appSettings>
|
||||||
|
<log4net>
|
||||||
|
<appender name="Console" type="OpenSim.Framework.Console.OpenSimAppender, OpenSim.Framework.Console">
|
||||||
|
<filter type="log4net.Filter.LoggerMatchFilter">
|
||||||
|
<loggerToMatch value="special"/>
|
||||||
|
<acceptOnMatch value="false"/>
|
||||||
|
</filter>
|
||||||
|
<layout type="log4net.Layout.PatternLayout">
|
||||||
|
<conversionPattern value="%date{HH:mm:ss} - %message" />
|
||||||
|
<!-- console log with milliseconds. Useful for debugging -->
|
||||||
|
<!-- <conversionPattern value="%date{HH:mm:ss.fff} - %message" /> -->
|
||||||
|
</layout>
|
||||||
|
</appender>
|
||||||
|
|
||||||
|
<!-- If you want automatic log-rolling then use RollingFileAppender instead of FileAppender:
|
||||||
|
<appender name="LogFileAppender" type="log4net.Appender.RollingFileAppender">
|
||||||
|
<file value="log/OpenSim.log" />
|
||||||
|
<rollingStyle value="Date" />
|
||||||
|
<datePattern value="'.'yyyy-MM-dd"/>
|
||||||
|
...
|
||||||
|
-->
|
||||||
|
|
||||||
|
<appender name="LogFileAppender" type="log4net.Appender.FileAppender">
|
||||||
|
<file value="OpenSim.log" />
|
||||||
|
<appendToFile value="true" />
|
||||||
|
<filter type="log4net.Filter.LoggerMatchFilter">
|
||||||
|
<loggerToMatch value="special"/>
|
||||||
|
<acceptOnMatch value="false"/>
|
||||||
|
</filter>
|
||||||
|
<layout type="log4net.Layout.PatternLayout">
|
||||||
|
<conversionPattern value="%date %-5level - %logger %message%newline" />
|
||||||
|
</layout>
|
||||||
|
</appender>
|
||||||
|
|
||||||
|
<appender name="StatsLogFileAppender" type="log4net.Appender.FileAppender">
|
||||||
|
<file value="OpenSimStats.log"/>
|
||||||
|
<appendToFile value="true" />
|
||||||
|
<layout type="log4net.Layout.PatternLayout">
|
||||||
|
<conversionPattern value="%date - %message%newline" />
|
||||||
|
</layout>
|
||||||
|
</appender>
|
||||||
|
|
||||||
|
<root>
|
||||||
|
<level value="DEBUG" />
|
||||||
|
<appender-ref ref="Console" />
|
||||||
|
<appender-ref ref="LogFileAppender" />
|
||||||
|
</root>
|
||||||
|
|
||||||
|
<!-- Independently control logging level for XEngine -->
|
||||||
|
<logger name="OpenSim.Region.ScriptEngine.XEngine">
|
||||||
|
<level value="INFO"/>
|
||||||
|
</logger>
|
||||||
|
|
||||||
|
<!-- Independently control logging level for per region module loading -->
|
||||||
|
<logger name="OpenSim.ApplicationPlugins.RegionModulesController.RegionModulesControllerPlugin">
|
||||||
|
<level value="INFO"/>
|
||||||
|
</logger>
|
||||||
|
|
||||||
|
<!-- used for stats recording -->
|
||||||
|
<logger name="special.StatsLogger">
|
||||||
|
<appender-ref ref="StatsLogFileAppender"/>
|
||||||
|
</logger>
|
||||||
|
</log4net>
|
||||||
|
</configuration>
|
|
@ -1,5 +0,0 @@
|
||||||
Many issues appear in the support channels because of a misunderstanding of the use of these utilities. And through discussion at OpenSimulator Office Hours it was determined that these tools probably serve no useful purpose anymore.
|
|
||||||
|
|
||||||
Instead of removing them immediately, we move them here, for a time, in case there is a useful purpose that has escaped us during conversations.
|
|
||||||
|
|
||||||
If a need to compile these arises, the OpenSim.32BitLaunch and Robust.32BitLaunch directories may be placed under the ./OpenSim/Tools sources subdirectory, run the prebuild script and compile.
|
|
Binary file not shown.
|
@ -26,35 +26,14 @@
|
||||||
*/
|
*/
|
||||||
|
|
||||||
using System;
|
using System;
|
||||||
using log4net;
|
|
||||||
|
|
||||||
namespace Robust._32BitLaunch
|
namespace Robust32
|
||||||
{
|
{
|
||||||
class Program
|
class Program
|
||||||
{
|
{
|
||||||
static void Main(string[] args)
|
static void Main(string[] args)
|
||||||
{
|
|
||||||
log4net.Config.XmlConfigurator.Configure();
|
|
||||||
|
|
||||||
System.Console.WriteLine("32-bit OpenSim executor");
|
|
||||||
System.Console.WriteLine("-----------------------");
|
|
||||||
System.Console.WriteLine("");
|
|
||||||
System.Console.WriteLine("This application is compiled for 32-bit CPU and will run under WOW32 or similar.");
|
|
||||||
System.Console.WriteLine("All 64-bit incompatibilities should be gone.");
|
|
||||||
System.Console.WriteLine("");
|
|
||||||
System.Threading.Thread.Sleep(300);
|
|
||||||
try
|
|
||||||
{
|
{
|
||||||
global::OpenSim.Server.OpenSimServer.Main(args);
|
global::OpenSim.Server.OpenSimServer.Main(args);
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
|
||||||
{
|
|
||||||
System.Console.WriteLine("OpenSim threw an exception:");
|
|
||||||
System.Console.WriteLine(ex.ToString());
|
|
||||||
System.Console.WriteLine("");
|
|
||||||
System.Console.WriteLine("Application will now terminate!");
|
|
||||||
System.Console.WriteLine("");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,92 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||||
|
<PropertyGroup>
|
||||||
|
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
|
||||||
|
<Platform Condition=" '$(Platform)' == '' ">x86</Platform>
|
||||||
|
<ProjectGuid>{A159489E-6552-4734-8EFA-8E031F63C7F6}</ProjectGuid>
|
||||||
|
<OutputType>Exe</OutputType>
|
||||||
|
<NoStandardLibraries>false</NoStandardLibraries>
|
||||||
|
<AssemblyName>Robust32</AssemblyName>
|
||||||
|
<TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
|
||||||
|
<TargetFrameworkProfile>
|
||||||
|
</TargetFrameworkProfile>
|
||||||
|
<FileAlignment>512</FileAlignment>
|
||||||
|
<PublishUrl>publish\</PublishUrl>
|
||||||
|
<Install>true</Install>
|
||||||
|
<InstallFrom>Disk</InstallFrom>
|
||||||
|
<UpdateEnabled>false</UpdateEnabled>
|
||||||
|
<UpdateMode>Foreground</UpdateMode>
|
||||||
|
<UpdateInterval>7</UpdateInterval>
|
||||||
|
<UpdateIntervalUnits>Days</UpdateIntervalUnits>
|
||||||
|
<UpdatePeriodically>false</UpdatePeriodically>
|
||||||
|
<UpdateRequired>false</UpdateRequired>
|
||||||
|
<MapFileExtensions>true</MapFileExtensions>
|
||||||
|
<ApplicationRevision>0</ApplicationRevision>
|
||||||
|
<ApplicationVersion>1.0.0.%2a</ApplicationVersion>
|
||||||
|
<IsWebBootstrapper>false</IsWebBootstrapper>
|
||||||
|
<UseApplicationTrust>false</UseApplicationTrust>
|
||||||
|
<BootstrapperEnabled>true</BootstrapperEnabled>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x86' ">
|
||||||
|
<DebugSymbols>true</DebugSymbols>
|
||||||
|
<DebugType>full</DebugType>
|
||||||
|
<Optimize>false</Optimize>
|
||||||
|
<OutputPath>..\..\..\bin\</OutputPath>
|
||||||
|
<DefineConstants>DEBUG;TRACE</DefineConstants>
|
||||||
|
<ErrorReport>prompt</ErrorReport>
|
||||||
|
<WarningLevel>4</WarningLevel>
|
||||||
|
<PlatformTarget>x86</PlatformTarget>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x86' ">
|
||||||
|
<DebugType>pdbonly</DebugType>
|
||||||
|
<Optimize>true</Optimize>
|
||||||
|
<OutputPath>..\..\..\bin\</OutputPath>
|
||||||
|
<DefineConstants>TRACE</DefineConstants>
|
||||||
|
<ErrorReport>prompt</ErrorReport>
|
||||||
|
<WarningLevel>4</WarningLevel>
|
||||||
|
<PlatformTarget>x86</PlatformTarget>
|
||||||
|
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
|
||||||
|
<GenerateSerializationAssemblies>Off</GenerateSerializationAssemblies>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup>
|
||||||
|
<RootNamespace>Robust32</RootNamespace>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup>
|
||||||
|
<StartupObject>Robust32.Program</StartupObject>
|
||||||
|
</PropertyGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<Reference Include="Microsoft.CSharp" />
|
||||||
|
<Reference Include="Robust, Version=0.0.0.0, Culture=neutral, processorArchitecture=MSIL">
|
||||||
|
<SpecificVersion>False</SpecificVersion>
|
||||||
|
<HintPath>..\..\..\bin\Robust.exe</HintPath>
|
||||||
|
</Reference>
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<Compile Include="Program.cs" />
|
||||||
|
<Compile Include="Properties\AssemblyInfo.cs" />
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<None Include="app.config" />
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<BootstrapperPackage Include=".NETFramework,Version=v4.0">
|
||||||
|
<Visible>False</Visible>
|
||||||
|
<ProductName>Microsoft .NET Framework 4 %28x86 and x64%29</ProductName>
|
||||||
|
<Install>true</Install>
|
||||||
|
</BootstrapperPackage>
|
||||||
|
<BootstrapperPackage Include="Microsoft.Net.Framework.3.5.SP1">
|
||||||
|
<Visible>False</Visible>
|
||||||
|
<ProductName>.NET Framework 3.5 SP1</ProductName>
|
||||||
|
<Install>false</Install>
|
||||||
|
</BootstrapperPackage>
|
||||||
|
<BootstrapperPackage Include="Microsoft.Windows.Installer.4.5">
|
||||||
|
<Visible>False</Visible>
|
||||||
|
<ProductName>Windows Installer 4.5</ProductName>
|
||||||
|
<Install>true</Install>
|
||||||
|
</BootstrapperPackage>
|
||||||
|
</ItemGroup>
|
||||||
|
<Import Project="$(MSBuildToolsPath)\Microsoft.CSHARP.Targets" />
|
||||||
|
<ProjectExtensions>
|
||||||
|
<VisualStudio AllowExistingFolder="true" />
|
||||||
|
</ProjectExtensions>
|
||||||
|
</Project>
|
|
@ -0,0 +1,13 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<Project ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||||
|
<PropertyGroup>
|
||||||
|
<PublishUrlHistory>publish\</PublishUrlHistory>
|
||||||
|
<InstallUrlHistory />
|
||||||
|
<SupportUrlHistory />
|
||||||
|
<UpdateUrlHistory />
|
||||||
|
<BootstrapperUrlHistory />
|
||||||
|
<ErrorReportUrlHistory />
|
||||||
|
<FallbackCulture>en-US</FallbackCulture>
|
||||||
|
<VerifyUploadedFiles>false</VerifyUploadedFiles>
|
||||||
|
</PropertyGroup>
|
||||||
|
</Project>
|
|
@ -0,0 +1,22 @@
|
||||||
|
|
||||||
|
Microsoft Visual Studio Solution File, Format Version 12.00
|
||||||
|
# Visual Studio 14
|
||||||
|
VisualStudioVersion = 14.0.25420.1
|
||||||
|
MinimumVisualStudioVersion = 10.0.40219.1
|
||||||
|
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Robust32", "Robust32.csproj", "{A159489E-6552-4734-8EFA-8E031F63C7F6}"
|
||||||
|
EndProject
|
||||||
|
Global
|
||||||
|
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||||
|
Debug|x86 = Debug|x86
|
||||||
|
Release|x86 = Release|x86
|
||||||
|
EndGlobalSection
|
||||||
|
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
||||||
|
{A159489E-6552-4734-8EFA-8E031F63C7F6}.Debug|x86.ActiveCfg = Debug|x86
|
||||||
|
{A159489E-6552-4734-8EFA-8E031F63C7F6}.Debug|x86.Build.0 = Debug|x86
|
||||||
|
{A159489E-6552-4734-8EFA-8E031F63C7F6}.Release|x86.ActiveCfg = Release|x86
|
||||||
|
{A159489E-6552-4734-8EFA-8E031F63C7F6}.Release|x86.Build.0 = Release|x86
|
||||||
|
EndGlobalSection
|
||||||
|
GlobalSection(SolutionProperties) = preSolution
|
||||||
|
HideSolutionNode = FALSE
|
||||||
|
EndGlobalSection
|
||||||
|
EndGlobal
|
|
@ -0,0 +1,72 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<configuration>
|
||||||
|
<configSections>
|
||||||
|
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net" />
|
||||||
|
</configSections>
|
||||||
|
<startup>
|
||||||
|
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0" />
|
||||||
|
</startup>
|
||||||
|
<runtime>
|
||||||
|
<loadFromRemoteSources enabled="true" />
|
||||||
|
</runtime>
|
||||||
|
<appSettings>
|
||||||
|
<add key="ClientSettingsProvider.ServiceUri" value="" />
|
||||||
|
</appSettings>
|
||||||
|
<log4net>
|
||||||
|
<appender name="Console" type="OpenSim.Framework.Console.OpenSimAppender, OpenSim.Framework.Console">
|
||||||
|
<filter type="log4net.Filter.LoggerMatchFilter">
|
||||||
|
<loggerToMatch value="special" />
|
||||||
|
<acceptOnMatch value="false" />
|
||||||
|
</filter>
|
||||||
|
<layout type="log4net.Layout.PatternLayout">
|
||||||
|
<conversionPattern value="%date{HH:mm:ss} - %message" />
|
||||||
|
</layout>
|
||||||
|
</appender>
|
||||||
|
<!-- If you want automatic log-rolling then use RollingFileAppender instead of FileAppender:
|
||||||
|
<appender name="LogFileAppender" type="log4net.Appender.RollingFileAppender">
|
||||||
|
<file value="log/Robust.log" />
|
||||||
|
<rollingStyle value="Date" />
|
||||||
|
<datePattern value="'.'yyyy-MM-dd"/>
|
||||||
|
...
|
||||||
|
-->
|
||||||
|
<appender name="LogFileAppender" type="log4net.Appender.FileAppender">
|
||||||
|
<file value="Robust.log" />
|
||||||
|
<appendToFile value="true" />
|
||||||
|
<filter type="log4net.Filter.LoggerMatchFilter">
|
||||||
|
<loggerToMatch value="special" />
|
||||||
|
<acceptOnMatch value="false" />
|
||||||
|
</filter>
|
||||||
|
<layout type="log4net.Layout.PatternLayout">
|
||||||
|
<conversionPattern value="%date %-5level - %logger %message%newline" />
|
||||||
|
</layout>
|
||||||
|
</appender>
|
||||||
|
<appender name="StatsLogFileAppender" type="log4net.Appender.FileAppender">
|
||||||
|
<file value="RobustStats.log" />
|
||||||
|
<appendToFile value="true" />
|
||||||
|
<layout type="log4net.Layout.PatternLayout">
|
||||||
|
<conversionPattern value="%date - %message%newline" />
|
||||||
|
</layout>
|
||||||
|
</appender>
|
||||||
|
<root>
|
||||||
|
<level value="DEBUG" />
|
||||||
|
<appender-ref ref="Console" />
|
||||||
|
<appender-ref ref="LogFileAppender" />
|
||||||
|
</root>
|
||||||
|
<!-- used for stats recording -->
|
||||||
|
<logger name="special.StatsLogger">
|
||||||
|
<appender-ref ref="StatsLogFileAppender" />
|
||||||
|
</logger>
|
||||||
|
</log4net>
|
||||||
|
<system.web>
|
||||||
|
<membership defaultProvider="ClientAuthenticationMembershipProvider">
|
||||||
|
<providers>
|
||||||
|
<add name="ClientAuthenticationMembershipProvider" type="System.Web.ClientServices.Providers.ClientFormsAuthenticationMembershipProvider, System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" serviceUri="" />
|
||||||
|
</providers>
|
||||||
|
</membership>
|
||||||
|
<roleManager defaultProvider="ClientRoleProvider" enabled="true">
|
||||||
|
<providers>
|
||||||
|
<add name="ClientRoleProvider" type="System.Web.ClientServices.Providers.ClientRoleProvider, System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" serviceUri="" cacheTimeout="86400" />
|
||||||
|
</providers>
|
||||||
|
</roleManager>
|
||||||
|
</system.web>
|
||||||
|
</configuration>
|
Loading…
Reference in New Issue