diff --git a/OpenSim/Framework/Monitoring/JobEngine.cs b/OpenSim/Framework/Monitoring/JobEngine.cs
index a6a059dcc6..115871e4a7 100644
--- a/OpenSim/Framework/Monitoring/JobEngine.cs
+++ b/OpenSim/Framework/Monitoring/JobEngine.cs
@@ -57,7 +57,8 @@ namespace OpenSim.Framework.Monitoring
///
/// Will be null if no job is currently running.
///
- public Job CurrentJob { get; private set; }
+ private Job m_currentJob;
+ public Job CurrentJob { get { return m_currentJob;} }
///
/// Number of jobs waiting to be processed.
@@ -82,16 +83,15 @@ namespace OpenSim.Framework.Monitoring
private CancellationTokenSource m_cancelSource;
- ///
- /// Used to signal that we are ready to complete stop.
- ///
- 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
///
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,31 +221,28 @@ 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;
- }
+ m_log.DebugFormat("[JobEngine] {0} stopping ignoring {1} jobs in queue",
+ Name,m_jobQueue.Count);
+ break;
}
catch(OperationCanceledException)
{
@@ -254,27 +250,24 @@ namespace OpenSim.Framework.Monitoring
}
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
diff --git a/OpenSim/Framework/Monitoring/WorkManager.cs b/OpenSim/Framework/Monitoring/WorkManager.cs
index 9d52f71f8d..5d9b185f29 100644
--- a/OpenSim/Framework/Monitoring/WorkManager.cs
+++ b/OpenSim/Framework/Monitoring/WorkManager.cs
@@ -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
///
///
/// The name of the job. This is used in monitoring and debugging.
- 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);
}
///
@@ -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)
diff --git a/OpenSim/Framework/Util.cs b/OpenSim/Framework/Util.cs
index f52a84c2e0..9a1e34842f 100644
--- a/OpenSim/Framework/Util.cs
+++ b/OpenSim/Framework/Util.cs
@@ -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 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)
{
diff --git a/OpenSim/Framework/WebUtil.cs b/OpenSim/Framework/WebUtil.cs
index 7b085d0ac1..48078ada97 100644
--- a/OpenSim/Framework/WebUtil.cs
+++ b/OpenSim/Framework/WebUtil.cs
@@ -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)
diff --git a/OpenSim/Region/ClientStack/Linden/UDP/LLClientView.cs b/OpenSim/Region/ClientStack/Linden/UDP/LLClientView.cs
index 1091078243..54359eb733 100644
--- a/OpenSim/Region/ClientStack/Linden/UDP/LLClientView.cs
+++ b/OpenSim/Region/ClientStack/Linden/UDP/LLClientView.cs
@@ -325,6 +325,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
///
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 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(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)
- {
- handlerUpdatePrimTexture(imagePack.ObjectData[i].ObjectLocalID,
- imagePack.ObjectData[i].TextureEntry, this);
- }
+ o = imagePack.ObjectData[i];
+ id = o.ObjectLocalID;
+ if(objImageSeqs.TryGetValue(id, out lastseq))
+ {
+ if(seq <= lastseq)
+ continue;
+ }
+ objImageSeqs[id] = seq;
+ handlerUpdatePrimTexture(id, o.TextureEntry, this);
}
return true;
}
diff --git a/OpenSim/Region/ClientStack/Linden/UDP/LLUDPServer.cs b/OpenSim/Region/ClientStack/Linden/UDP/LLUDPServer.cs
index ec51e28488..b575ed9448 100644
--- a/OpenSim/Region/ClientStack/Linden/UDP/LLUDPServer.cs
+++ b/OpenSim/Region/ClientStack/Linden/UDP/LLUDPServer.cs
@@ -312,9 +312,6 @@ namespace OpenSim.Region.ClientStack.LindenUDP
/// stack. Use zero to leave this value as the default
protected int m_recvBufferSize;
- /// Flag to process packets asynchronously or synchronously
- protected bool m_asyncPacketHandling;
-
/// Tracks whether or not a packet was sent each round so we know
/// whether or not to sleep
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.
///
- public JobEngine IpahEngine { get; protected set; }
+// public JobEngine IpahEngine { get; protected set; }
///
/// 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)
diff --git a/OpenSim/Region/ClientStack/Linden/UDP/OpenSimUDPBase.cs b/OpenSim/Region/ClientStack/Linden/UDP/OpenSimUDPBase.cs
index 35a07111df..8dd96d65d6 100644
--- a/OpenSim/Region/ClientStack/Linden/UDP/OpenSimUDPBase.cs
+++ b/OpenSim/Region/ClientStack/Linden/UDP/OpenSimUDPBase.cs
@@ -57,9 +57,6 @@ namespace OpenMetaverse
/// UDP socket, used in either client or server mode
private Socket m_udpSocket;
- /// Flag to process packets asynchronously or synchronously
- private bool m_asyncPacketHandling;
-
///
/// Are we to use object pool(s) to reduce memory churn when receiving data?
///
@@ -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
- 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");
@@ -407,12 +402,7 @@ namespace OpenMetaverse
if (IsRunningInbound)
{
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,10 +459,7 @@ 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();
+ 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) { }
+ }
}
}
diff --git a/OpenSim/Region/ClientStack/Linden/UDP/Tests/BasicCircuitTests.cs b/OpenSim/Region/ClientStack/Linden/UDP/Tests/BasicCircuitTests.cs
index 0e1a9e3d10..eb262d27f7 100644
--- a/OpenSim/Region/ClientStack/Linden/UDP/Tests/BasicCircuitTests.cs
+++ b/OpenSim/Region/ClientStack/Linden/UDP/Tests/BasicCircuitTests.cs
@@ -91,6 +91,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP.Tests
///
/// Test adding a client to the stack
///
+/*
[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);
}
-
+*/
// ///
// /// Test removing a client from the stack
// ///
diff --git a/OpenSim/Region/CoreModules/Framework/EntityTransfer/HGEntityTransferModule.cs b/OpenSim/Region/CoreModules/Framework/EntityTransfer/HGEntityTransferModule.cs
index 1ce69276b4..56c654f224 100644
--- a/OpenSim/Region/CoreModules/Framework/EntityTransfer/HGEntityTransferModule.cs
+++ b/OpenSim/Region/CoreModules/Framework/EntityTransfer/HGEntityTransferModule.cs
@@ -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(
diff --git a/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs b/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs
index bba7a969d3..057ca17b0d 100644
--- a/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs
+++ b/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs
@@ -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");
}
}
}
diff --git a/OpenSim/Region/Framework/Scenes/SceneGraph.cs b/OpenSim/Region/Framework/Scenes/SceneGraph.cs
index 96b8c8b221..ae827f4e80 100755
--- a/OpenSim/Region/Framework/Scenes/SceneGraph.cs
+++ b/OpenSim/Region/Framework/Scenes/SceneGraph.cs
@@ -1604,13 +1604,16 @@ namespace OpenSim.Region.Framework.Scenes
///
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();
}
}
diff --git a/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs b/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs
index 1695d9bd54..fdfe8ae7ce 100644
--- a/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs
+++ b/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs
@@ -4129,20 +4129,6 @@ namespace OpenSim.Region.Framework.Scenes
return Parts.Count();
}
- ///
- /// Update the texture entry for this part
- ///
- ///
- ///
- 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
diff --git a/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs b/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs
index 61aa91555b..c2eac24784 100644
--- a/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs
+++ b/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs
@@ -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;
diff --git a/OpenSim/Region/Framework/Scenes/ScenePresence.cs b/OpenSim/Region/Framework/Scenes/ScenePresence.cs
index 47af3b88cb..7e3adb9b8e 100644
--- a/OpenSim/Region/Framework/Scenes/ScenePresence.cs
+++ b/OpenSim/Region/Framework/Scenes/ScenePresence.cs
@@ -2280,18 +2280,13 @@ 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;
@@ -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--;
// }
diff --git a/OpenSim/Region/Framework/Scenes/Tests/ScenePresenceAnimationTests.cs b/OpenSim/Region/Framework/Scenes/Tests/ScenePresenceAnimationTests.cs
index 42d91b954a..d650c4346d 100644
--- a/OpenSim/Region/Framework/Scenes/Tests/ScenePresenceAnimationTests.cs
+++ b/OpenSim/Region/Framework/Scenes/Tests/ScenePresenceAnimationTests.cs
@@ -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"));
}
diff --git a/OpenSim/Region/PhysicsModules/ubOde/ODEMeshWorker.cs b/OpenSim/Region/PhysicsModules/ubOde/ODEMeshWorker.cs
index a5ee2c9063..dc87a78720 100644
--- a/OpenSim/Region/PhysicsModules/ubOde/ODEMeshWorker.cs
+++ b/OpenSim/Region/PhysicsModules/ubOde/ODEMeshWorker.cs
@@ -80,7 +80,7 @@ namespace OpenSim.Region.PhysicsModule.ubOde
public float MeshSculptphysicalLOD = 32;
- private OpenSim.Framework.BlockingQueue createqueue = new OpenSim.Framework.BlockingQueue();
+ private OpenSim.Framework.BlockingQueue workQueue = new OpenSim.Framework.BlockingQueue();
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
diff --git a/OpenSim/Region/PhysicsModules/ubOde/ODEPrim.cs b/OpenSim/Region/PhysicsModules/ubOde/ODEPrim.cs
index 9bf71f7687..4bed0d2138 100644
--- a/OpenSim/Region/PhysicsModules/ubOde/ODEPrim.cs
+++ b/OpenSim/Region/PhysicsModules/ubOde/ODEPrim.cs
@@ -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)
diff --git a/bin/OpenSim32.exe b/bin/OpenSim32.exe
new file mode 100644
index 0000000000..74477c0b68
Binary files /dev/null and b/bin/OpenSim32.exe differ
diff --git a/bin/OpenSim32.exe.config b/bin/OpenSim32.exe.config
new file mode 100644
index 0000000000..92242406f1
--- /dev/null
+++ b/bin/OpenSim32.exe.config
@@ -0,0 +1,75 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/bin/OpenSim.32BitLaunch.pdb b/bin/OpenSim32.pdb
similarity index 71%
rename from bin/OpenSim.32BitLaunch.pdb
rename to bin/OpenSim32.pdb
index 5083dd5df5..86d3058531 100644
Binary files a/bin/OpenSim.32BitLaunch.pdb and b/bin/OpenSim32.pdb differ
diff --git a/bin/OpenSimDefaults.ini b/bin/OpenSimDefaults.ini
index 7bfb32a966..f7e2f5f68f 100644
--- a/bin/OpenSimDefaults.ini
+++ b/bin/OpenSimDefaults.ini
@@ -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
diff --git a/bin/Robust32.exe b/bin/Robust32.exe
new file mode 100644
index 0000000000..e5e4674337
Binary files /dev/null and b/bin/Robust32.exe differ
diff --git a/bin/OpenSim.32BitLaunch.exe.config b/bin/Robust32.exe.config
similarity index 53%
rename from bin/OpenSim.32BitLaunch.exe.config
rename to bin/Robust32.exe.config
index 5b7807a8e3..ca3ee0e0cf 100644
--- a/bin/OpenSim.32BitLaunch.exe.config
+++ b/bin/Robust32.exe.config
@@ -1,75 +1,72 @@
-
+
+
+
+
-
-
+
-
-
+
+
-
-
-
-
-
-
+
-
-
+
+
-
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
+
-
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/bin/Robust32.pdb b/bin/Robust32.pdb
new file mode 100644
index 0000000000..15a0d7544e
Binary files /dev/null and b/bin/Robust32.pdb differ
diff --git a/bin/Robust32.vshost.exe b/bin/Robust32.vshost.exe
new file mode 100644
index 0000000000..681ab771eb
Binary files /dev/null and b/bin/Robust32.vshost.exe differ
diff --git a/bin/Robust.32BitLaunch.exe.config b/bin/Robust32.vshost.exe.config
similarity index 53%
rename from bin/Robust.32BitLaunch.exe.config
rename to bin/Robust32.vshost.exe.config
index 0399a1bd34..ca3ee0e0cf 100644
--- a/bin/Robust.32BitLaunch.exe.config
+++ b/bin/Robust32.vshost.exe.config
@@ -1,63 +1,72 @@
-
+
+
+
+
-
-
+
-
-
+
+
-
-
-
-
+
-
-
+
+
-
-
+
-
-
-
+
-
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/bin/opensim-ode.sh b/bin/opensim-ode.sh
deleted file mode 100755
index 7c6157106b..0000000000
--- a/bin/opensim-ode.sh
+++ /dev/null
@@ -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
diff --git a/bin/opensim.sh b/bin/opensim.sh
new file mode 100755
index 0000000000..508d925665
--- /dev/null
+++ b/bin/opensim.sh
@@ -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
diff --git a/share/32BitLaunch/OpenSim.32BitLaunch.exe b/share/32BitLaunch/OpenSim.32BitLaunch.exe
deleted file mode 100755
index 62c14af416..0000000000
Binary files a/share/32BitLaunch/OpenSim.32BitLaunch.exe and /dev/null differ
diff --git a/share/32BitLaunch/OpenSim.32BitLaunch/OpenSim32.csproj b/share/32BitLaunch/OpenSim.32BitLaunch/OpenSim32.csproj
new file mode 100644
index 0000000000..c9a03e129b
--- /dev/null
+++ b/share/32BitLaunch/OpenSim.32BitLaunch/OpenSim32.csproj
@@ -0,0 +1,94 @@
+
+
+
+ Debug
+ x86
+ {968B4C73-280D-4FF5-9F73-DD3D10160C2E}
+ Exe
+ false
+ OpenSim32
+ v4.0
+
+
+ 512
+ false
+ publish\
+ true
+ Disk
+ false
+ Foreground
+ 7
+ Days
+ false
+ false
+ true
+ 0
+ 1.0.0.%2a
+ false
+ true
+
+
+ true
+ full
+ false
+ bin\Debug\
+ DEBUG;TRACE
+ prompt
+ 4
+ x86
+
+
+ pdbonly
+ true
+ ..\..\..\bin\
+ TRACE
+ prompt
+ 4
+ x86
+ true
+ false
+
+
+ OpenSim32
+
+
+
+ ..\..\..\bin\log4net.dll
+
+
+
+ ..\..\..\bin\OpenSim.exe
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ False
+ Microsoft .NET Framework 4 %28x86 and x64%29
+ true
+
+
+ False
+ .NET Framework 3.5 SP1
+ false
+
+
+ False
+ Windows Installer 4.5
+ true
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/share/32BitLaunch/OpenSim.32BitLaunch/OpenSim32.csproj.user b/share/32BitLaunch/OpenSim.32BitLaunch/OpenSim32.csproj.user
new file mode 100644
index 0000000000..2f100f7ba6
--- /dev/null
+++ b/share/32BitLaunch/OpenSim.32BitLaunch/OpenSim32.csproj.user
@@ -0,0 +1,16 @@
+
+
+
+ publish\
+
+
+
+
+
+ en-US
+ false
+
+
+ C:\Avination\testsim\bin\
+
+
\ No newline at end of file
diff --git a/share/32BitLaunch/OpenSim.32BitLaunch/OpenSim32.sln b/share/32BitLaunch/OpenSim.32BitLaunch/OpenSim32.sln
new file mode 100644
index 0000000000..93522eabdc
--- /dev/null
+++ b/share/32BitLaunch/OpenSim.32BitLaunch/OpenSim32.sln
@@ -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
diff --git a/share/32BitLaunch/OpenSim.32BitLaunch/Program.cs b/share/32BitLaunch/OpenSim.32BitLaunch/Program.cs
index 52806b81bf..ca6c359d40 100644
--- a/share/32BitLaunch/OpenSim.32BitLaunch/Program.cs
+++ b/share/32BitLaunch/OpenSim.32BitLaunch/Program.cs
@@ -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("");
- }
+ global::OpenSim.Application.Main(args);
}
}
}
diff --git a/share/32BitLaunch/OpenSim.32BitLaunch/Properties/AssemblyInfo.cs b/share/32BitLaunch/OpenSim.32BitLaunch/Properties/AssemblyInfo.cs
index e81870f92f..bda1a79493 100644
--- a/share/32BitLaunch/OpenSim.32BitLaunch/Properties/AssemblyInfo.cs
+++ b/share/32BitLaunch/OpenSim.32BitLaunch/Properties/AssemblyInfo.cs
@@ -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")]
diff --git a/share/32BitLaunch/OpenSim.32BitLaunch/app.config b/share/32BitLaunch/OpenSim.32BitLaunch/app.config
new file mode 100644
index 0000000000..92242406f1
--- /dev/null
+++ b/share/32BitLaunch/OpenSim.32BitLaunch/app.config
@@ -0,0 +1,75 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/share/32BitLaunch/README b/share/32BitLaunch/README
deleted file mode 100644
index 443cde0ab9..0000000000
--- a/share/32BitLaunch/README
+++ /dev/null
@@ -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.
diff --git a/share/32BitLaunch/Robust.32BitLaunch.exe b/share/32BitLaunch/Robust.32BitLaunch.exe
deleted file mode 100755
index affedb4bca..0000000000
Binary files a/share/32BitLaunch/Robust.32BitLaunch.exe and /dev/null differ
diff --git a/share/32BitLaunch/Robust.32BitLaunch/Program.cs b/share/32BitLaunch/Robust.32BitLaunch/Program.cs
index 490414c456..ec5943e4ca 100644
--- a/share/32BitLaunch/Robust.32BitLaunch/Program.cs
+++ b/share/32BitLaunch/Robust.32BitLaunch/Program.cs
@@ -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("");
- }
}
}
}
diff --git a/share/32BitLaunch/Robust.32BitLaunch/Robust32.csproj b/share/32BitLaunch/Robust.32BitLaunch/Robust32.csproj
new file mode 100644
index 0000000000..a6dae90c3a
--- /dev/null
+++ b/share/32BitLaunch/Robust.32BitLaunch/Robust32.csproj
@@ -0,0 +1,92 @@
+
+
+
+ Debug
+ x86
+ {A159489E-6552-4734-8EFA-8E031F63C7F6}
+ Exe
+ false
+ Robust32
+ v4.0
+
+
+ 512
+ publish\
+ true
+ Disk
+ false
+ Foreground
+ 7
+ Days
+ false
+ false
+ true
+ 0
+ 1.0.0.%2a
+ false
+ false
+ true
+
+
+ true
+ full
+ false
+ ..\..\..\bin\
+ DEBUG;TRACE
+ prompt
+ 4
+ x86
+
+
+ pdbonly
+ true
+ ..\..\..\bin\
+ TRACE
+ prompt
+ 4
+ x86
+ true
+ Off
+
+
+ Robust32
+
+
+ Robust32.Program
+
+
+
+
+ False
+ ..\..\..\bin\Robust.exe
+
+
+
+
+
+
+
+
+
+
+
+ False
+ Microsoft .NET Framework 4 %28x86 and x64%29
+ true
+
+
+ False
+ .NET Framework 3.5 SP1
+ false
+
+
+ False
+ Windows Installer 4.5
+ true
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/share/32BitLaunch/Robust.32BitLaunch/Robust32.csproj.user b/share/32BitLaunch/Robust.32BitLaunch/Robust32.csproj.user
new file mode 100644
index 0000000000..8221333555
--- /dev/null
+++ b/share/32BitLaunch/Robust.32BitLaunch/Robust32.csproj.user
@@ -0,0 +1,13 @@
+
+
+
+ publish\
+
+
+
+
+
+ en-US
+ false
+
+
\ No newline at end of file
diff --git a/share/32BitLaunch/Robust.32BitLaunch/Robust32.sln b/share/32BitLaunch/Robust.32BitLaunch/Robust32.sln
new file mode 100644
index 0000000000..368b3ca50b
--- /dev/null
+++ b/share/32BitLaunch/Robust.32BitLaunch/Robust32.sln
@@ -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
diff --git a/share/32BitLaunch/Robust.32BitLaunch/app.config b/share/32BitLaunch/Robust.32BitLaunch/app.config
new file mode 100644
index 0000000000..ca3ee0e0cf
--- /dev/null
+++ b/share/32BitLaunch/Robust.32BitLaunch/app.config
@@ -0,0 +1,72 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file