Merge branch 'master' into httptests
commit
84946e3061
|
@ -57,7 +57,8 @@ namespace OpenSim.Framework.Monitoring
|
|||
/// <remarks>
|
||||
/// Will be null if no job is currently running.
|
||||
/// </remarks>
|
||||
public Job CurrentJob { get; private set; }
|
||||
private Job m_currentJob;
|
||||
public Job CurrentJob { get { return m_currentJob;} }
|
||||
|
||||
/// <summary>
|
||||
/// Number of jobs waiting to be processed.
|
||||
|
@ -82,16 +83,15 @@ namespace OpenSim.Framework.Monitoring
|
|||
|
||||
private CancellationTokenSource m_cancelSource;
|
||||
|
||||
/// <summary>
|
||||
/// Used to signal that we are ready to complete stop.
|
||||
/// </summary>
|
||||
private ManualResetEvent m_finishedProcessingAfterStop = new ManualResetEvent(false);
|
||||
private int m_timeout = -1;
|
||||
|
||||
public JobEngine(string name, string loggingName)
|
||||
private bool m_threadRunnig = false;
|
||||
|
||||
public JobEngine(string name, string loggingName, int timeout = -1)
|
||||
{
|
||||
Name = name;
|
||||
LoggingName = loggingName;
|
||||
|
||||
m_timeout = timeout;
|
||||
RequestProcessTimeoutOnStop = 5000;
|
||||
}
|
||||
|
||||
|
@ -104,18 +104,9 @@ namespace OpenSim.Framework.Monitoring
|
|||
|
||||
IsRunning = true;
|
||||
|
||||
m_finishedProcessingAfterStop.Reset();
|
||||
|
||||
m_cancelSource = new CancellationTokenSource();
|
||||
|
||||
WorkManager.StartThread(
|
||||
ProcessRequests,
|
||||
Name,
|
||||
ThreadPriority.Normal,
|
||||
false,
|
||||
true,
|
||||
null,
|
||||
int.MaxValue);
|
||||
WorkManager.RunInThreadPool(ProcessRequests, null, Name, false);
|
||||
m_threadRunnig = true;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -131,20 +122,16 @@ namespace OpenSim.Framework.Monitoring
|
|||
m_log.DebugFormat("[JobEngine] Stopping {0}", Name);
|
||||
|
||||
IsRunning = false;
|
||||
|
||||
m_finishedProcessingAfterStop.Reset();
|
||||
if(m_jobQueue.Count <= 0)
|
||||
if(m_threadRunnig)
|
||||
{
|
||||
m_cancelSource.Cancel();
|
||||
|
||||
m_finishedProcessingAfterStop.WaitOne(RequestProcessTimeoutOnStop);
|
||||
m_finishedProcessingAfterStop.Close();
|
||||
m_threadRunnig = false;
|
||||
}
|
||||
}
|
||||
finally
|
||||
{
|
||||
if(m_cancelSource != null)
|
||||
m_cancelSource.Dispose();
|
||||
if(m_finishedProcessingAfterStop != null)
|
||||
m_finishedProcessingAfterStop.Dispose();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -203,6 +190,18 @@ namespace OpenSim.Framework.Monitoring
|
|||
/// </param>
|
||||
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)
|
||||
{
|
||||
m_jobQueue.Add(job);
|
||||
|
@ -222,59 +221,53 @@ namespace OpenSim.Framework.Monitoring
|
|||
|
||||
m_warnOverMaxQueue = false;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
private void ProcessRequests()
|
||||
private void ProcessRequests(Object o)
|
||||
{
|
||||
while(IsRunning || m_jobQueue.Count > 0)
|
||||
while(IsRunning)
|
||||
{
|
||||
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)
|
||||
{
|
||||
// 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",
|
||||
Name,m_jobQueue.Count);
|
||||
break;
|
||||
}
|
||||
}
|
||||
catch(OperationCanceledException)
|
||||
{
|
||||
break;
|
||||
}
|
||||
|
||||
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
|
||||
{
|
||||
CurrentJob.Action();
|
||||
m_currentJob.Action();
|
||||
}
|
||||
catch(Exception e)
|
||||
{
|
||||
m_log.Error(
|
||||
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)
|
||||
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
|
||||
|
|
|
@ -57,7 +57,7 @@ namespace OpenSim.Framework.Monitoring
|
|||
|
||||
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(
|
||||
new Stat(
|
||||
|
@ -182,9 +182,9 @@ namespace OpenSim.Framework.Monitoring
|
|||
/// <param name="callback"></param>
|
||||
/// <param name="obj"></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>
|
||||
|
@ -231,10 +231,8 @@ namespace OpenSim.Framework.Monitoring
|
|||
JobEngine.QueueJob(name, () => callback(obj));
|
||||
else if (canRunInThisThread)
|
||||
callback(obj);
|
||||
else if (mustNotTimeout)
|
||||
RunInThread(callback, obj, name, log);
|
||||
else
|
||||
Util.FireAndForget(callback, obj, name);
|
||||
Util.FireAndForget(callback, obj, name, !mustNotTimeout);
|
||||
}
|
||||
|
||||
private static void HandleControlCommand(string module, string[] args)
|
||||
|
|
|
@ -2492,8 +2492,9 @@ namespace OpenSim.Framework
|
|||
public bool Running { get; set; }
|
||||
public bool Aborted { get; set; }
|
||||
private int started;
|
||||
public bool DoTimeout;
|
||||
|
||||
public ThreadInfo(long threadFuncNum, string context)
|
||||
public ThreadInfo(long threadFuncNum, string context, bool dotimeout = true)
|
||||
{
|
||||
ThreadFuncNum = threadFuncNum;
|
||||
this.context = context;
|
||||
|
@ -2501,6 +2502,7 @@ namespace OpenSim.Framework
|
|||
Thread = null;
|
||||
Running = false;
|
||||
Aborted = false;
|
||||
DoTimeout = dotimeout;
|
||||
}
|
||||
|
||||
public void Started()
|
||||
|
@ -2571,7 +2573,7 @@ namespace OpenSim.Framework
|
|||
foreach (KeyValuePair<long, ThreadInfo> entry in activeThreads)
|
||||
{
|
||||
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());
|
||||
t.Abort();
|
||||
|
@ -2612,7 +2614,7 @@ namespace OpenSim.Framework
|
|||
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);
|
||||
|
||||
|
@ -2634,7 +2636,7 @@ namespace OpenSim.Framework
|
|||
bool loggingEnabled = LogThreadPool > 0;
|
||||
|
||||
long threadFuncNum = Interlocked.Increment(ref nextThreadFuncNum);
|
||||
ThreadInfo threadInfo = new ThreadInfo(threadFuncNum, context);
|
||||
ThreadInfo threadInfo = new ThreadInfo(threadFuncNum, context, dotimeout);
|
||||
|
||||
if (FireAndForgetMethod == FireAndForgetMethod.RegressionTest)
|
||||
{
|
||||
|
|
|
@ -1262,18 +1262,24 @@ namespace OpenSim.Framework
|
|||
{
|
||||
if (hwr.StatusCode == HttpStatusCode.NotFound)
|
||||
return deserial;
|
||||
|
||||
if (hwr.StatusCode == HttpStatusCode.Unauthorized)
|
||||
{
|
||||
m_log.Error(string.Format(
|
||||
"[SynchronousRestObjectRequester]: Web request {0} requires authentication ",
|
||||
requestUrl));
|
||||
return deserial;
|
||||
m_log.ErrorFormat("[SynchronousRestObjectRequester]: Web request {0} requires authentication",
|
||||
requestUrl);
|
||||
}
|
||||
else
|
||||
{
|
||||
m_log.WarnFormat("[SynchronousRestObjectRequester]: Web request {0} returned error: {1}",
|
||||
requestUrl, hwr.StatusCode);
|
||||
}
|
||||
}
|
||||
else
|
||||
m_log.Error(string.Format(
|
||||
"[SynchronousRestObjectRequester]: WebException for {0} {1} {2} ",
|
||||
verb, requestUrl, typeof(TResponse).ToString()), e);
|
||||
m_log.ErrorFormat(
|
||||
"[SynchronousRestObjectRequester]: WebException for {0} {1} {2} {3}",
|
||||
verb, requestUrl, typeof(TResponse).ToString(), e.Message);
|
||||
|
||||
return deserial;
|
||||
}
|
||||
}
|
||||
catch (System.InvalidOperationException)
|
||||
|
|
|
@ -325,6 +325,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
|
|||
/// </summary>
|
||||
public LLImageManager ImageManager { get; private set; }
|
||||
|
||||
public JobEngine m_asyncPacketProcess;
|
||||
private readonly LLUDPServer m_udpServer;
|
||||
private readonly LLUDPClient m_udpClient;
|
||||
private readonly UUID m_sessionId;
|
||||
|
@ -378,7 +379,6 @@ namespace OpenSim.Region.ClientStack.LindenUDP
|
|||
protected Scene m_scene;
|
||||
protected string m_firstName;
|
||||
protected string m_lastName;
|
||||
protected Thread m_clientThread;
|
||||
protected Vector3 m_startpos;
|
||||
protected UUID m_activeGroupID;
|
||||
protected string m_activeGroupName = String.Empty;
|
||||
|
@ -529,7 +529,8 @@ namespace OpenSim.Region.ClientStack.LindenUDP
|
|||
m_prioritizer = new Prioritizer(m_scene);
|
||||
|
||||
RegisterLocalPacketHandlers();
|
||||
|
||||
string name = string.Format("AsyncInUDP-{0}",m_agentId.ToString());
|
||||
m_asyncPacketProcess = new JobEngine(name, name, 10000);
|
||||
IsActive = true;
|
||||
}
|
||||
|
||||
|
@ -592,6 +593,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
|
|||
if (OnConnectionClosed != null)
|
||||
OnConnectionClosed(this);
|
||||
|
||||
m_asyncPacketProcess.Stop();
|
||||
|
||||
// Flush all of the packets out of the UDP server for this client
|
||||
if (m_udpServer != null)
|
||||
|
@ -778,12 +780,13 @@ namespace OpenSim.Region.ClientStack.LindenUDP
|
|||
cinfo.AsyncRequests[packet.Type.ToString()]++;
|
||||
|
||||
object obj = new AsyncPacketProcess(this, pprocessor.method, packet);
|
||||
|
||||
/*
|
||||
if (pprocessor.InEngine)
|
||||
m_udpServer.IpahEngine.QueueJob(packet.Type.ToString(), () => ProcessSpecificPacketAsync(obj));
|
||||
else
|
||||
Util.FireAndForget(ProcessSpecificPacketAsync, obj, packet.Type.ToString());
|
||||
|
||||
*/
|
||||
m_asyncPacketProcess.QueueJob(packet.Type.ToString(), () => ProcessSpecificPacketAsync(obj));
|
||||
result = true;
|
||||
}
|
||||
else
|
||||
|
@ -841,6 +844,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
|
|||
|
||||
public virtual void Start()
|
||||
{
|
||||
m_asyncPacketProcess.Start();
|
||||
m_scene.AddNewAgent(this, PresenceType.User);
|
||||
|
||||
// RefreshGroupMembership();
|
||||
|
@ -6036,8 +6040,8 @@ namespace OpenSim.Region.ClientStack.LindenUDP
|
|||
AddLocalPacketHandler(PacketType.ObjectExtraParams, HandleObjectExtraParams);
|
||||
AddLocalPacketHandler(PacketType.ObjectDuplicate, HandleObjectDuplicate);
|
||||
AddLocalPacketHandler(PacketType.RequestMultipleObjects, HandleRequestMultipleObjects);
|
||||
AddLocalPacketHandler(PacketType.ObjectSelect, HandleObjectSelect);
|
||||
AddLocalPacketHandler(PacketType.ObjectDeselect, HandleObjectDeselect);
|
||||
AddLocalPacketHandler(PacketType.ObjectSelect, HandleObjectSelect, true, true);
|
||||
AddLocalPacketHandler(PacketType.ObjectDeselect, HandleObjectDeselect, true, true);
|
||||
AddLocalPacketHandler(PacketType.ObjectPosition, HandleObjectPosition);
|
||||
AddLocalPacketHandler(PacketType.ObjectScale, HandleObjectScale);
|
||||
AddLocalPacketHandler(PacketType.ObjectRotation, HandleObjectRotation);
|
||||
|
@ -8030,19 +8034,41 @@ namespace OpenSim.Region.ClientStack.LindenUDP
|
|||
return true;
|
||||
}
|
||||
|
||||
Dictionary<uint, uint> objImageSeqs = null;
|
||||
double lastobjImageSeqsMS = 0.0;
|
||||
|
||||
private bool HandleObjectImage(IClientAPI sender, Packet 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++)
|
||||
{
|
||||
handlerUpdatePrimTexture = OnUpdatePrimTexture;
|
||||
if (handlerUpdatePrimTexture != null)
|
||||
o = imagePack.ObjectData[i];
|
||||
id = o.ObjectLocalID;
|
||||
if(objImageSeqs.TryGetValue(id, out lastseq))
|
||||
{
|
||||
handlerUpdatePrimTexture(imagePack.ObjectData[i].ObjectLocalID,
|
||||
imagePack.ObjectData[i].TextureEntry, this);
|
||||
if(seq <= lastseq)
|
||||
continue;
|
||||
}
|
||||
objImageSeqs[id] = seq;
|
||||
handlerUpdatePrimTexture(id, o.TextureEntry, this);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
|
|
@ -312,9 +312,6 @@ namespace OpenSim.Region.ClientStack.LindenUDP
|
|||
/// stack. Use zero to leave this value as the default</summary>
|
||||
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
|
||||
/// whether or not to sleep</summary>
|
||||
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
|
||||
/// threadpool threads.
|
||||
/// </summary>
|
||||
public JobEngine IpahEngine { get; protected set; }
|
||||
// public JobEngine IpahEngine { get; protected set; }
|
||||
|
||||
/// <summary>
|
||||
/// Run queue empty processing within a single persistent thread.
|
||||
|
@ -473,7 +470,6 @@ namespace OpenSim.Region.ClientStack.LindenUDP
|
|||
IConfig config = configSource.Configs["ClientStack.LindenUDP"];
|
||||
if (config != null)
|
||||
{
|
||||
m_asyncPacketHandling = config.GetBoolean("async_packet_handling", true);
|
||||
m_recvBufferSize = config.GetInt("client_socket_rcvbuf_size", 0);
|
||||
sceneThrottleBps = config.GetInt("scene_throttle_max_bps", 0);
|
||||
|
||||
|
@ -531,7 +527,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
|
|||
{
|
||||
StartInbound();
|
||||
StartOutbound();
|
||||
IpahEngine.Start();
|
||||
// IpahEngine.Start();
|
||||
OqrEngine.Start();
|
||||
|
||||
m_elapsedMSSinceLastStatReport = Environment.TickCount;
|
||||
|
@ -540,10 +536,9 @@ namespace OpenSim.Region.ClientStack.LindenUDP
|
|||
public void StartInbound()
|
||||
{
|
||||
m_log.InfoFormat(
|
||||
"[LLUDPSERVER]: Starting inbound packet processing for the LLUDP server in {0} mode with UsePools = {1}",
|
||||
m_asyncPacketHandling ? "asynchronous" : "synchronous", UsePools);
|
||||
"[LLUDPSERVER]: Starting inbound packet processing for the LLUDP server");
|
||||
|
||||
base.StartInbound(m_recvBufferSize, m_asyncPacketHandling);
|
||||
base.StartInbound(m_recvBufferSize);
|
||||
|
||||
// This thread will process the packets received that are placed on the packetInbox
|
||||
WorkManager.StartThread(
|
||||
|
@ -577,7 +572,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
|
|||
m_log.Info("[LLUDPSERVER]: Shutting down the LLUDP server for " + Scene.Name);
|
||||
base.StopOutbound();
|
||||
base.StopInbound();
|
||||
IpahEngine.Stop();
|
||||
// IpahEngine.Stop();
|
||||
OqrEngine.Stop();
|
||||
}
|
||||
|
||||
|
@ -696,12 +691,12 @@ namespace OpenSim.Region.ClientStack.LindenUDP
|
|||
|
||||
Scene = (Scene)scene;
|
||||
m_location = new Location(Scene.RegionInfo.RegionHandle);
|
||||
|
||||
/*
|
||||
IpahEngine
|
||||
= new JobEngine(
|
||||
string.Format("Incoming Packet Async Handling Engine ({0})", Scene.Name),
|
||||
"INCOMING PACKET ASYNC HANDLING ENGINE");
|
||||
|
||||
*/
|
||||
OqrEngine
|
||||
= new JobEngine(
|
||||
string.Format("Outgoing Queue Refill Engine ({0})", Scene.Name),
|
||||
|
@ -786,7 +781,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
|
|||
MeasuresOfInterest.AverageChangeOverTime,
|
||||
stat => stat.Value = GetTotalQueuedOutgoingPackets(),
|
||||
StatVerbosity.Info));
|
||||
|
||||
/*
|
||||
StatsManager.RegisterStat(
|
||||
new Stat(
|
||||
"IncomingPacketAsyncRequestsWaiting",
|
||||
|
@ -799,7 +794,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
|
|||
MeasuresOfInterest.None,
|
||||
stat => stat.Value = IpahEngine.JobsWaiting,
|
||||
StatVerbosity.Debug));
|
||||
|
||||
*/
|
||||
StatsManager.RegisterStat(
|
||||
new Stat(
|
||||
"OQRERequestsWaiting",
|
||||
|
@ -1227,7 +1222,8 @@ namespace OpenSim.Region.ClientStack.LindenUDP
|
|||
outgoingPacket.SequenceNumber, isReliable, isResend, udpClient.AgentID, Scene.Name);
|
||||
|
||||
// Put the UDP payload on the wire
|
||||
AsyncBeginSend(buffer);
|
||||
// AsyncBeginSend(buffer);
|
||||
SyncSend(buffer);
|
||||
|
||||
// Keep track of when this packet was sent out (right now)
|
||||
outgoingPacket.TickCount = Environment.TickCount & Int32.MaxValue;
|
||||
|
@ -1912,7 +1908,8 @@ namespace OpenSim.Region.ClientStack.LindenUDP
|
|||
|
||||
Buffer.BlockCopy(packetData, 0, buffer.Data, 0, length);
|
||||
|
||||
AsyncBeginSend(buffer);
|
||||
// AsyncBeginSend(buffer);
|
||||
SyncSend(buffer);
|
||||
}
|
||||
|
||||
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>
|
||||
private Socket m_udpSocket;
|
||||
|
||||
/// <summary>Flag to process packets asynchronously or synchronously</summary>
|
||||
private bool m_asyncPacketHandling;
|
||||
|
||||
/// <summary>
|
||||
/// Are we to use object pool(s) to reduce memory churn when receiving data?
|
||||
/// </summary>
|
||||
|
@ -205,10 +202,8 @@ namespace OpenMetaverse
|
|||
/// manner (not throwing an exception when the remote side resets the
|
||||
/// connection). This call is ignored on Mono where the flag is not
|
||||
/// necessary</remarks>
|
||||
public virtual void StartInbound(int recvBufferSize, bool asyncPacketHandling)
|
||||
public virtual void StartInbound(int recvBufferSize)
|
||||
{
|
||||
m_asyncPacketHandling = asyncPacketHandling;
|
||||
|
||||
if (!IsRunningInbound)
|
||||
{
|
||||
m_log.DebugFormat("[UDPBASE]: Starting inbound UDP loop");
|
||||
|
@ -408,11 +403,6 @@ namespace OpenMetaverse
|
|||
{
|
||||
UdpReceives++;
|
||||
|
||||
// Asynchronous mode will start another receive before the
|
||||
// callback for this packet is even fired. Very parallel :-)
|
||||
if (m_asyncPacketHandling)
|
||||
AsyncBeginReceive();
|
||||
|
||||
try
|
||||
{
|
||||
// get the buffer that was created in AsyncBeginReceive
|
||||
|
@ -469,9 +459,6 @@ namespace OpenMetaverse
|
|||
// if (UsePools)
|
||||
// Pool.ReturnObject(buffer);
|
||||
|
||||
// Synchronous mode waits until the packet callback completes
|
||||
// before starting the receive to fetch another packet
|
||||
if (!m_asyncPacketHandling)
|
||||
AsyncBeginReceive();
|
||||
}
|
||||
}
|
||||
|
@ -500,7 +487,7 @@ namespace OpenMetaverse
|
|||
}
|
||||
catch (SocketException) { }
|
||||
catch (ObjectDisposedException) { }
|
||||
// }
|
||||
// }
|
||||
}
|
||||
|
||||
void AsyncEndSend(IAsyncResult result)
|
||||
|
@ -515,5 +502,25 @@ namespace OpenMetaverse
|
|||
catch (SocketException) { }
|
||||
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>
|
||||
/// Test adding a client to the stack
|
||||
/// </summary>
|
||||
/*
|
||||
[Test]
|
||||
public void TestAddClient()
|
||||
{
|
||||
|
@ -165,7 +166,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP.Tests
|
|||
ScenePresence spAfterAckTimeout = m_scene.GetScenePresence(sp.UUID);
|
||||
Assert.That(spAfterAckTimeout, Is.Null);
|
||||
}
|
||||
|
||||
*/
|
||||
// /// <summary>
|
||||
// /// Test removing a client from the stack
|
||||
// /// </summary>
|
||||
|
|
|
@ -163,7 +163,7 @@ namespace OpenSim.Region.CoreModules.Framework.EntityTransfer
|
|||
m_incomingSceneObjectEngine
|
||||
= new JobEngine(
|
||||
string.Format("HG Incoming Scene Object Engine ({0})", scene.Name),
|
||||
"HG INCOMING SCENE OBJECT ENGINE");
|
||||
"HG INCOMING SCENE OBJECT ENGINE", 30000);
|
||||
|
||||
StatsManager.RegisterStat(
|
||||
new Stat(
|
||||
|
|
|
@ -2865,7 +2865,7 @@ namespace OpenSim.Region.Framework.Scenes
|
|||
root.SendPropertiesToClient(sp.ControllingClient);
|
||||
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>
|
||||
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))
|
||||
{
|
||||
group.UpdateTextureEntry(localID, texture);
|
||||
part.UpdateTextureEntry(texture);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1661,8 +1664,11 @@ namespace OpenSim.Region.Framework.Scenes
|
|||
|
||||
if (wantedPhys != group.UsesPhysics && remoteClient != null)
|
||||
{
|
||||
remoteClient.SendAlertMessage("Object physics canceled because exceeds the limit of " +
|
||||
m_parentScene.m_linksetPhysCapacity + " physical prims with shape type not set to None");
|
||||
if(m_parentScene.m_linksetPhysCapacity != 0)
|
||||
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();
|
||||
}
|
||||
}
|
||||
|
|
|
@ -4129,20 +4129,6 @@ namespace OpenSim.Region.Framework.Scenes
|
|||
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)
|
||||
{
|
||||
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)
|
||||
newFace = newTex.FaceTextures[i];
|
||||
|
||||
if (oldFace.TextureID != newFace.TextureID)
|
||||
changeFlags |= Changed.TEXTURE;
|
||||
|
||||
Color4 oldRGBA = oldFace.RGBA;
|
||||
Color4 newRGBA = newFace.RGBA;
|
||||
|
||||
|
@ -5025,9 +5028,6 @@ SendFullUpdateToClient(remoteClient, Position) ignores position parameter
|
|||
oldRGBA.A != newRGBA.A)
|
||||
changeFlags |= Changed.COLOR;
|
||||
|
||||
if (oldFace.TextureID != newFace.TextureID)
|
||||
changeFlags |= Changed.TEXTURE;
|
||||
|
||||
// Max change, skip the rest of testing
|
||||
if (changeFlags == (Changed.TEXTURE | Changed.COLOR))
|
||||
break;
|
||||
|
@ -5053,17 +5053,11 @@ SendFullUpdateToClient(remoteClient, Position) ignores position parameter
|
|||
m_shape.TextureEntry = newTex.GetBytes();
|
||||
if (changeFlags != 0)
|
||||
TriggerScriptChangedEvent(changeFlags);
|
||||
UpdateFlag = UpdateRequired.FULL;
|
||||
ParentGroup.HasGroupChanged = true;
|
||||
|
||||
//This is madness..
|
||||
//ParentGroup.ScheduleGroupForFullUpdate();
|
||||
//This is sparta
|
||||
ScheduleFullUpdate();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
internal void UpdatePhysicsSubscribedEvents()
|
||||
{
|
||||
PhysicsActor pa = PhysActor;
|
||||
|
|
|
@ -2280,19 +2280,14 @@ namespace OpenSim.Region.Framework.Scenes
|
|||
m_lastChildAgentUpdateDrawDistance = DrawDistance;
|
||||
m_lastChildAgentUpdatePosition = AbsolutePosition;
|
||||
m_childUpdatesBusy = false; // allow them
|
||||
|
||||
|
||||
}
|
||||
|
||||
m_log.DebugFormat("[CompleteMovement] openChildAgents: {0}ms", Util.EnvironmentTickCountSubtract(ts));
|
||||
|
||||
|
||||
|
||||
// send the rest of the world
|
||||
if (m_teleportFlags > 0 && !IsNPC || m_currentParcelHide)
|
||||
SendInitialDataToMe();
|
||||
|
||||
|
||||
// priority uses avatar position only
|
||||
// m_reprioritizationLastPosition = AbsolutePosition;
|
||||
// m_reprioritizationLastDrawDistance = DrawDistance;
|
||||
|
@ -2958,31 +2953,32 @@ namespace OpenSim.Region.Framework.Scenes
|
|||
Dir_ControlFlags.DIR_CONTROL_FLAG_DOWN));
|
||||
|
||||
MovementFlag &= noMovFlagsMask;
|
||||
AgentControlFlags &= noMovFlagsMask;
|
||||
uint tmpAgentControlFlags = (uint)m_AgentControlFlags;
|
||||
tmpAgentControlFlags &= noMovFlagsMask;
|
||||
|
||||
if (LocalVectorToTarget3D.X < 0) //MoveBack
|
||||
{
|
||||
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;
|
||||
}
|
||||
else if (LocalVectorToTarget3D.X > 0) //Move 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;
|
||||
}
|
||||
|
||||
if (LocalVectorToTarget3D.Y > 0) //MoveLeft
|
||||
{
|
||||
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;
|
||||
}
|
||||
else if (LocalVectorToTarget3D.Y < 0) //MoveRight
|
||||
{
|
||||
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;
|
||||
}
|
||||
|
||||
|
@ -3006,6 +3002,7 @@ namespace OpenSim.Region.Framework.Scenes
|
|||
// "[SCENE PRESENCE]: HandleMoveToTargetUpdate adding {0} to move vector {1} for {2}",
|
||||
// LocalVectorToTarget3D, agent_control_v3, Name);
|
||||
|
||||
m_AgentControlFlags = (AgentManager.ControlFlags) tmpAgentControlFlags;
|
||||
agent_control_v3 += LocalVectorToTarget3D;
|
||||
}
|
||||
catch (Exception e)
|
||||
|
@ -4970,8 +4967,8 @@ namespace OpenSim.Region.Framework.Scenes
|
|||
|
||||
// if (m_updateCount > 0)
|
||||
// {
|
||||
if (Animator != null && Animator.UpdateMovementAnimations())
|
||||
TriggerScenePresenceUpdated();
|
||||
// if (Animator != null && Animator.UpdateMovementAnimations())
|
||||
// TriggerScenePresenceUpdated();
|
||||
// m_updateCount--;
|
||||
// }
|
||||
|
||||
|
|
|
@ -60,7 +60,7 @@ namespace OpenSim.Region.Framework.Scenes.Tests
|
|||
TestScene scene = new SceneHelpers().SetupScene();
|
||||
ScenePresence sp = SceneHelpers.AddScenePresence(scene, TestHelpers.ParseTail(0x1));
|
||||
sp.Flying = true;
|
||||
sp.PhysicsCollisionUpdate(new CollisionEventUpdate());
|
||||
sp.Animator.UpdateMovementAnimations();
|
||||
|
||||
Assert.That(sp.Animator.CurrentMovementAnimation, Is.EqualTo("HOVER"));
|
||||
}
|
||||
|
|
|
@ -80,7 +80,7 @@ namespace OpenSim.Region.PhysicsModule.ubOde
|
|||
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 Thread m_thread;
|
||||
|
@ -110,7 +110,7 @@ namespace OpenSim.Region.PhysicsModule.ubOde
|
|||
|
||||
while(m_running)
|
||||
{
|
||||
ODEPhysRepData nextRep = createqueue.Dequeue();
|
||||
ODEPhysRepData nextRep = workQueue.Dequeue();
|
||||
if(!m_running)
|
||||
return;
|
||||
if (nextRep == null)
|
||||
|
@ -139,7 +139,7 @@ namespace OpenSim.Region.PhysicsModule.ubOde
|
|||
try
|
||||
{
|
||||
m_thread.Abort();
|
||||
createqueue.Clear();
|
||||
workQueue.Clear();
|
||||
}
|
||||
catch
|
||||
{
|
||||
|
@ -196,7 +196,7 @@ namespace OpenSim.Region.PhysicsModule.ubOde
|
|||
repData.meshState = MeshState.loadingAsset;
|
||||
|
||||
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?
|
||||
{
|
||||
repData.comand = meshWorkerCmnds.changefull;
|
||||
createqueue.Enqueue(repData);
|
||||
workQueue.Enqueue(repData);
|
||||
}
|
||||
}
|
||||
else
|
||||
|
|
|
@ -165,6 +165,7 @@ namespace OpenSim.Region.PhysicsModule.ubOde
|
|||
|
||||
private float m_density;
|
||||
private byte m_shapetype;
|
||||
private byte m_fakeShapetype;
|
||||
public bool _zeroFlag;
|
||||
private bool m_lastUpdateSent;
|
||||
|
||||
|
@ -420,7 +421,7 @@ namespace OpenSim.Region.PhysicsModule.ubOde
|
|||
{
|
||||
if (value.IsFinite())
|
||||
{
|
||||
_parent_scene.m_meshWorker.ChangeActorPhysRep(this, _pbs, value, m_shapetype);
|
||||
_parent_scene.m_meshWorker.ChangeActorPhysRep(this, _pbs, value, m_fakeShapetype);
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -630,7 +631,7 @@ namespace OpenSim.Region.PhysicsModule.ubOde
|
|||
set
|
||||
{
|
||||
// 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
|
||||
{
|
||||
return m_shapetype;
|
||||
return m_fakeShapetype;
|
||||
}
|
||||
set
|
||||
{
|
||||
m_shapetype = value;
|
||||
m_fakeShapetype = value;
|
||||
_parent_scene.m_meshWorker.ChangeActorPhysRep(this, _pbs, _size, value);
|
||||
}
|
||||
}
|
||||
|
@ -1329,7 +1330,7 @@ namespace OpenSim.Region.PhysicsModule.ubOde
|
|||
|
||||
_triMeshData = IntPtr.Zero;
|
||||
|
||||
m_shapetype = _shapeType;
|
||||
m_fakeShapetype = _shapeType;
|
||||
|
||||
m_lastdoneSelected = false;
|
||||
m_isSelected = false;
|
||||
|
@ -1346,7 +1347,7 @@ namespace OpenSim.Region.PhysicsModule.ubOde
|
|||
AddChange(changes.Add, null);
|
||||
|
||||
// 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;
|
||||
m_OBB = repData.OBB;
|
||||
|
@ -3161,7 +3162,6 @@ namespace OpenSim.Region.PhysicsModule.ubOde
|
|||
{
|
||||
_size = repData.size; //??
|
||||
_pbs = repData.pbs;
|
||||
m_shapetype = repData.shapetype;
|
||||
|
||||
m_mesh = repData.mesh;
|
||||
|
||||
|
@ -3200,9 +3200,11 @@ namespace OpenSim.Region.PhysicsModule.ubOde
|
|||
{
|
||||
repData.size = _size;
|
||||
repData.pbs = _pbs;
|
||||
repData.shapetype = m_shapetype;
|
||||
repData.shapetype = m_fakeShapetype;
|
||||
_parent_scene.m_meshWorker.RequestMesh(repData);
|
||||
}
|
||||
else
|
||||
m_shapetype = repData.shapetype;
|
||||
}
|
||||
|
||||
private void changePhysRepData(ODEPhysRepData repData)
|
||||
|
@ -3236,7 +3238,6 @@ namespace OpenSim.Region.PhysicsModule.ubOde
|
|||
|
||||
_size = repData.size;
|
||||
_pbs = repData.pbs;
|
||||
m_shapetype = repData.shapetype;
|
||||
|
||||
m_mesh = repData.mesh;
|
||||
|
||||
|
@ -3287,9 +3288,11 @@ namespace OpenSim.Region.PhysicsModule.ubOde
|
|||
{
|
||||
repData.size = _size;
|
||||
repData.pbs = _pbs;
|
||||
repData.shapetype = m_shapetype;
|
||||
repData.shapetype = m_fakeShapetype;
|
||||
_parent_scene.m_meshWorker.RequestMesh(repData);
|
||||
}
|
||||
else
|
||||
m_shapetype = repData.shapetype;
|
||||
}
|
||||
|
||||
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]
|
||||
; 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
|
||||
; incoming requests we can process; the default on .NET is 8192
|
||||
; which is about 2 4k-sized UDP datagrams. On mono this is
|
||||
|
|
Binary file not shown.
|
@ -1,75 +1,72 @@
|
|||
<?xml version="1.0" encoding="utf-8" ?>
|
||||
<?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" />
|
||||
<gcConcurrent enabled="true" />
|
||||
<gcServer 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"/>
|
||||
<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:
|
||||
<!-- If you want automatic log-rolling then use RollingFileAppender instead of FileAppender:
|
||||
<appender name="LogFileAppender" type="log4net.Appender.RollingFileAppender">
|
||||
<file value="log/OpenSim.32BitLaunch.log" />
|
||||
<file value="log/Robust.log" />
|
||||
<rollingStyle value="Date" />
|
||||
<datePattern value="'.'yyyy-MM-dd"/>
|
||||
...
|
||||
-->
|
||||
|
||||
<appender name="LogFileAppender" type="log4net.Appender.FileAppender">
|
||||
<file value="OpenSim.32BitLaunch.log" />
|
||||
<file value="Robust.log" />
|
||||
<appendToFile value="true" />
|
||||
<filter type="log4net.Filter.LoggerMatchFilter">
|
||||
<loggerToMatch value="special"/>
|
||||
<acceptOnMatch value="false"/>
|
||||
<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"/>
|
||||
<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>
|
||||
|
||||
<!-- 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"/>
|
||||
<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>
|
Binary file not shown.
Binary file not shown.
|
@ -1,63 +1,72 @@
|
|||
<?xml version="1.0" encoding="utf-8" ?>
|
||||
<?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" />
|
||||
<gcConcurrent enabled="true" />
|
||||
<gcServer 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"/>
|
||||
<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:
|
||||
<!-- If you want automatic log-rolling then use RollingFileAppender instead of FileAppender:
|
||||
<appender name="LogFileAppender" type="log4net.Appender.RollingFileAppender">
|
||||
<file value="log/Robust.32BitLaunch.log" />
|
||||
<file value="log/Robust.log" />
|
||||
<rollingStyle value="Date" />
|
||||
<datePattern value="'.'yyyy-MM-dd"/>
|
||||
...
|
||||
-->
|
||||
|
||||
<appender name="LogFileAppender" type="log4net.Appender.FileAppender">
|
||||
<file value="Robust.32BitLaunch.log" />
|
||||
<file value="Robust.log" />
|
||||
<appendToFile value="true" />
|
||||
<filter type="log4net.Filter.LoggerMatchFilter">
|
||||
<loggerToMatch value="special"/>
|
||||
<acceptOnMatch value="false"/>
|
||||
<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"/>
|
||||
<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"/>
|
||||
<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>
|
|
@ -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;
|
||||
|
||||
namespace OpenSim._32BitLaunch
|
||||
namespace OpenSim32
|
||||
{
|
||||
class Program
|
||||
{
|
||||
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);
|
||||
}
|
||||
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
|
||||
// set of attributes. Change these attribute values to modify the information
|
||||
// associated with an assembly.
|
||||
[assembly: AssemblyTitle("OpenSim.32BitLaunch")]
|
||||
[assembly: AssemblyDescription("")]
|
||||
[assembly: AssemblyTitle("OpenSim32")]
|
||||
[assembly: AssemblyDescription("OpenSim 32Bit Launcher")]
|
||||
[assembly: AssemblyConfiguration("")]
|
||||
[assembly: AssemblyCompany("http://opensimulator.org")]
|
||||
[assembly: AssemblyProduct("OpenSim.32BitLaunch")]
|
||||
[assembly: AssemblyProduct("OpenSim 32BitLauncher")]
|
||||
[assembly: AssemblyCopyright("Copyright (c) 2008")]
|
||||
[assembly: AssemblyTrademark("")]
|
||||
[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
|
||||
// by using the '*' as shown below:
|
||||
// [assembly: AssemblyVersion("0.6.3.*")]
|
||||
[assembly: AssemblyVersion("0.6.3.*")]
|
||||
[assembly: AssemblyVersion("0.9.1.*")]
|
||||
[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 log4net;
|
||||
|
||||
namespace Robust._32BitLaunch
|
||||
namespace Robust32
|
||||
{
|
||||
class Program
|
||||
{
|
||||
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);
|
||||
}
|
||||
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