diff options
author | UbitUmarov | 2017-06-14 03:04:14 +0100 |
---|---|---|
committer | UbitUmarov | 2017-06-14 03:04:14 +0100 |
commit | 84946e3061d7b845af2821c8693356f35368617a (patch) | |
tree | 51c2a72600116de2533843389099a9b006f9c084 | |
parent | revert. The .net concurrent objects look nice, but mono5 cpu load with them d... (diff) | |
parent | main generic use JobEngine also does not need a permanent thread.. actually d... (diff) | |
download | opensim-SC-84946e3061d7b845af2821c8693356f35368617a.zip opensim-SC-84946e3061d7b845af2821c8693356f35368617a.tar.gz opensim-SC-84946e3061d7b845af2821c8693356f35368617a.tar.bz2 opensim-SC-84946e3061d7b845af2821c8693356f35368617a.tar.xz |
Merge branch 'master' into httptests
Diffstat (limited to '')
42 files changed, 733 insertions, 283 deletions
diff --git a/OpenSim/Framework/Monitoring/JobEngine.cs b/OpenSim/Framework/Monitoring/JobEngine.cs index a6a059d..115871e 100644 --- a/OpenSim/Framework/Monitoring/JobEngine.cs +++ b/OpenSim/Framework/Monitoring/JobEngine.cs | |||
@@ -57,7 +57,8 @@ namespace OpenSim.Framework.Monitoring | |||
57 | /// <remarks> | 57 | /// <remarks> |
58 | /// Will be null if no job is currently running. | 58 | /// Will be null if no job is currently running. |
59 | /// </remarks> | 59 | /// </remarks> |
60 | public Job CurrentJob { get; private set; } | 60 | private Job m_currentJob; |
61 | public Job CurrentJob { get { return m_currentJob;} } | ||
61 | 62 | ||
62 | /// <summary> | 63 | /// <summary> |
63 | /// Number of jobs waiting to be processed. | 64 | /// Number of jobs waiting to be processed. |
@@ -82,16 +83,15 @@ namespace OpenSim.Framework.Monitoring | |||
82 | 83 | ||
83 | private CancellationTokenSource m_cancelSource; | 84 | private CancellationTokenSource m_cancelSource; |
84 | 85 | ||
85 | /// <summary> | 86 | private int m_timeout = -1; |
86 | /// Used to signal that we are ready to complete stop. | 87 | |
87 | /// </summary> | 88 | private bool m_threadRunnig = false; |
88 | private ManualResetEvent m_finishedProcessingAfterStop = new ManualResetEvent(false); | ||
89 | 89 | ||
90 | public JobEngine(string name, string loggingName) | 90 | public JobEngine(string name, string loggingName, int timeout = -1) |
91 | { | 91 | { |
92 | Name = name; | 92 | Name = name; |
93 | LoggingName = loggingName; | 93 | LoggingName = loggingName; |
94 | 94 | m_timeout = timeout; | |
95 | RequestProcessTimeoutOnStop = 5000; | 95 | RequestProcessTimeoutOnStop = 5000; |
96 | } | 96 | } |
97 | 97 | ||
@@ -104,18 +104,9 @@ namespace OpenSim.Framework.Monitoring | |||
104 | 104 | ||
105 | IsRunning = true; | 105 | IsRunning = true; |
106 | 106 | ||
107 | m_finishedProcessingAfterStop.Reset(); | ||
108 | |||
109 | m_cancelSource = new CancellationTokenSource(); | 107 | m_cancelSource = new CancellationTokenSource(); |
110 | 108 | WorkManager.RunInThreadPool(ProcessRequests, null, Name, false); | |
111 | WorkManager.StartThread( | 109 | m_threadRunnig = true; |
112 | ProcessRequests, | ||
113 | Name, | ||
114 | ThreadPriority.Normal, | ||
115 | false, | ||
116 | true, | ||
117 | null, | ||
118 | int.MaxValue); | ||
119 | } | 110 | } |
120 | } | 111 | } |
121 | 112 | ||
@@ -131,20 +122,16 @@ namespace OpenSim.Framework.Monitoring | |||
131 | m_log.DebugFormat("[JobEngine] Stopping {0}", Name); | 122 | m_log.DebugFormat("[JobEngine] Stopping {0}", Name); |
132 | 123 | ||
133 | IsRunning = false; | 124 | IsRunning = false; |
134 | 125 | if(m_threadRunnig) | |
135 | m_finishedProcessingAfterStop.Reset(); | 126 | { |
136 | if(m_jobQueue.Count <= 0) | ||
137 | m_cancelSource.Cancel(); | 127 | m_cancelSource.Cancel(); |
138 | 128 | m_threadRunnig = false; | |
139 | m_finishedProcessingAfterStop.WaitOne(RequestProcessTimeoutOnStop); | 129 | } |
140 | m_finishedProcessingAfterStop.Close(); | ||
141 | } | 130 | } |
142 | finally | 131 | finally |
143 | { | 132 | { |
144 | if(m_cancelSource != null) | 133 | if(m_cancelSource != null) |
145 | m_cancelSource.Dispose(); | 134 | m_cancelSource.Dispose(); |
146 | if(m_finishedProcessingAfterStop != null) | ||
147 | m_finishedProcessingAfterStop.Dispose(); | ||
148 | } | 135 | } |
149 | } | 136 | } |
150 | } | 137 | } |
@@ -203,6 +190,18 @@ namespace OpenSim.Framework.Monitoring | |||
203 | /// </param> | 190 | /// </param> |
204 | public bool QueueJob(Job job) | 191 | public bool QueueJob(Job job) |
205 | { | 192 | { |
193 | lock(JobLock) | ||
194 | { | ||
195 | if(!IsRunning) | ||
196 | return false; | ||
197 | |||
198 | if(!m_threadRunnig) | ||
199 | { | ||
200 | WorkManager.RunInThreadPool(ProcessRequests, null, Name, false); | ||
201 | m_threadRunnig = true; | ||
202 | } | ||
203 | } | ||
204 | |||
206 | if (m_jobQueue.Count < m_jobQueue.BoundedCapacity) | 205 | if (m_jobQueue.Count < m_jobQueue.BoundedCapacity) |
207 | { | 206 | { |
208 | m_jobQueue.Add(job); | 207 | m_jobQueue.Add(job); |
@@ -222,59 +221,53 @@ namespace OpenSim.Framework.Monitoring | |||
222 | 221 | ||
223 | m_warnOverMaxQueue = false; | 222 | m_warnOverMaxQueue = false; |
224 | } | 223 | } |
225 | |||
226 | return false; | 224 | return false; |
227 | } | 225 | } |
228 | } | 226 | } |
229 | 227 | ||
230 | private void ProcessRequests() | 228 | private void ProcessRequests(Object o) |
231 | { | 229 | { |
232 | while(IsRunning || m_jobQueue.Count > 0) | 230 | while(IsRunning) |
233 | { | 231 | { |
234 | try | 232 | try |
235 | { | 233 | { |
236 | CurrentJob = m_jobQueue.Take(m_cancelSource.Token); | 234 | if(!m_jobQueue.TryTake(out m_currentJob, m_timeout, m_cancelSource.Token)) |
237 | } | ||
238 | catch(ObjectDisposedException e) | ||
239 | { | ||
240 | // If we see this whilst not running then it may be due to a race where this thread checks | ||
241 | // IsRunning after the stopping thread sets it to false and disposes of the cancellation source. | ||
242 | if(IsRunning) | ||
243 | throw e; | ||
244 | else | ||
245 | { | 235 | { |
246 | m_log.DebugFormat("[JobEngine] {0} stopping ignoring {1} jobs in queue", | 236 | lock(JobLock) |
247 | Name,m_jobQueue.Count); | 237 | m_threadRunnig = false; |
248 | break; | 238 | break; |
249 | } | 239 | } |
250 | } | 240 | } |
241 | catch(ObjectDisposedException e) | ||
242 | { | ||
243 | m_log.DebugFormat("[JobEngine] {0} stopping ignoring {1} jobs in queue", | ||
244 | Name,m_jobQueue.Count); | ||
245 | break; | ||
246 | } | ||
251 | catch(OperationCanceledException) | 247 | catch(OperationCanceledException) |
252 | { | 248 | { |
253 | break; | 249 | break; |
254 | } | 250 | } |
255 | 251 | ||
256 | if(LogLevel >= 1) | 252 | if(LogLevel >= 1) |
257 | m_log.DebugFormat("[{0}]: Processing job {1}",LoggingName,CurrentJob.Name); | 253 | m_log.DebugFormat("[{0}]: Processing job {1}",LoggingName,m_currentJob.Name); |
258 | 254 | ||
259 | try | 255 | try |
260 | { | 256 | { |
261 | CurrentJob.Action(); | 257 | m_currentJob.Action(); |
262 | } | 258 | } |
263 | catch(Exception e) | 259 | catch(Exception e) |
264 | { | 260 | { |
265 | m_log.Error( | 261 | m_log.Error( |
266 | string.Format( | 262 | string.Format( |
267 | "[{0}]: Job {1} failed, continuing. Exception ",LoggingName,CurrentJob.Name),e); | 263 | "[{0}]: Job {1} failed, continuing. Exception ",LoggingName,m_currentJob.Name),e); |
268 | } | 264 | } |
269 | 265 | ||
270 | if(LogLevel >= 1) | 266 | if(LogLevel >= 1) |
271 | m_log.DebugFormat("[{0}]: Processed job {1}",LoggingName,CurrentJob.Name); | 267 | m_log.DebugFormat("[{0}]: Processed job {1}",LoggingName,m_currentJob.Name); |
272 | 268 | ||
273 | CurrentJob = null; | 269 | m_currentJob = null; |
274 | } | 270 | } |
275 | |||
276 | Watchdog.RemoveThread(false); | ||
277 | m_finishedProcessingAfterStop.Set(); | ||
278 | } | 271 | } |
279 | 272 | ||
280 | public class Job | 273 | public class Job |
diff --git a/OpenSim/Framework/Monitoring/WorkManager.cs b/OpenSim/Framework/Monitoring/WorkManager.cs index 9d52f71..5d9b185 100644 --- a/OpenSim/Framework/Monitoring/WorkManager.cs +++ b/OpenSim/Framework/Monitoring/WorkManager.cs | |||
@@ -57,7 +57,7 @@ namespace OpenSim.Framework.Monitoring | |||
57 | 57 | ||
58 | static WorkManager() | 58 | static WorkManager() |
59 | { | 59 | { |
60 | JobEngine = new JobEngine("Non-blocking non-critical job engine", "JOB ENGINE"); | 60 | JobEngine = new JobEngine("Non-blocking non-critical job engine", "JOB ENGINE", 30000); |
61 | 61 | ||
62 | StatsManager.RegisterStat( | 62 | StatsManager.RegisterStat( |
63 | new Stat( | 63 | new Stat( |
@@ -182,9 +182,9 @@ namespace OpenSim.Framework.Monitoring | |||
182 | /// <param name="callback"></param> | 182 | /// <param name="callback"></param> |
183 | /// <param name="obj"></param> | 183 | /// <param name="obj"></param> |
184 | /// <param name="name">The name of the job. This is used in monitoring and debugging.</param> | 184 | /// <param name="name">The name of the job. This is used in monitoring and debugging.</param> |
185 | public static void RunInThreadPool(System.Threading.WaitCallback callback, object obj, string name) | 185 | public static void RunInThreadPool(System.Threading.WaitCallback callback, object obj, string name, bool timeout = true) |
186 | { | 186 | { |
187 | Util.FireAndForget(callback, obj, name); | 187 | Util.FireAndForget(callback, obj, name, timeout); |
188 | } | 188 | } |
189 | 189 | ||
190 | /// <summary> | 190 | /// <summary> |
@@ -231,10 +231,8 @@ namespace OpenSim.Framework.Monitoring | |||
231 | JobEngine.QueueJob(name, () => callback(obj)); | 231 | JobEngine.QueueJob(name, () => callback(obj)); |
232 | else if (canRunInThisThread) | 232 | else if (canRunInThisThread) |
233 | callback(obj); | 233 | callback(obj); |
234 | else if (mustNotTimeout) | ||
235 | RunInThread(callback, obj, name, log); | ||
236 | else | 234 | else |
237 | Util.FireAndForget(callback, obj, name); | 235 | Util.FireAndForget(callback, obj, name, !mustNotTimeout); |
238 | } | 236 | } |
239 | 237 | ||
240 | private static void HandleControlCommand(string module, string[] args) | 238 | private static void HandleControlCommand(string module, string[] args) |
diff --git a/OpenSim/Framework/Util.cs b/OpenSim/Framework/Util.cs index f52a84c..9a1e348 100644 --- a/OpenSim/Framework/Util.cs +++ b/OpenSim/Framework/Util.cs | |||
@@ -2492,8 +2492,9 @@ namespace OpenSim.Framework | |||
2492 | public bool Running { get; set; } | 2492 | public bool Running { get; set; } |
2493 | public bool Aborted { get; set; } | 2493 | public bool Aborted { get; set; } |
2494 | private int started; | 2494 | private int started; |
2495 | public bool DoTimeout; | ||
2495 | 2496 | ||
2496 | public ThreadInfo(long threadFuncNum, string context) | 2497 | public ThreadInfo(long threadFuncNum, string context, bool dotimeout = true) |
2497 | { | 2498 | { |
2498 | ThreadFuncNum = threadFuncNum; | 2499 | ThreadFuncNum = threadFuncNum; |
2499 | this.context = context; | 2500 | this.context = context; |
@@ -2501,6 +2502,7 @@ namespace OpenSim.Framework | |||
2501 | Thread = null; | 2502 | Thread = null; |
2502 | Running = false; | 2503 | Running = false; |
2503 | Aborted = false; | 2504 | Aborted = false; |
2505 | DoTimeout = dotimeout; | ||
2504 | } | 2506 | } |
2505 | 2507 | ||
2506 | public void Started() | 2508 | public void Started() |
@@ -2571,7 +2573,7 @@ namespace OpenSim.Framework | |||
2571 | foreach (KeyValuePair<long, ThreadInfo> entry in activeThreads) | 2573 | foreach (KeyValuePair<long, ThreadInfo> entry in activeThreads) |
2572 | { | 2574 | { |
2573 | ThreadInfo t = entry.Value; | 2575 | ThreadInfo t = entry.Value; |
2574 | if (t.Running && !t.Aborted && (t.Elapsed() >= THREAD_TIMEOUT)) | 2576 | if (t.DoTimeout && t.Running && !t.Aborted && (t.Elapsed() >= THREAD_TIMEOUT)) |
2575 | { | 2577 | { |
2576 | m_log.WarnFormat("Timeout in threadfunc {0} ({1}) {2}", t.ThreadFuncNum, t.Thread.Name, t.GetStackTrace()); | 2578 | m_log.WarnFormat("Timeout in threadfunc {0} ({1}) {2}", t.ThreadFuncNum, t.Thread.Name, t.GetStackTrace()); |
2577 | t.Abort(); | 2579 | t.Abort(); |
@@ -2612,7 +2614,7 @@ namespace OpenSim.Framework | |||
2612 | FireAndForget(callback, obj, null); | 2614 | FireAndForget(callback, obj, null); |
2613 | } | 2615 | } |
2614 | 2616 | ||
2615 | public static void FireAndForget(System.Threading.WaitCallback callback, object obj, string context) | 2617 | public static void FireAndForget(System.Threading.WaitCallback callback, object obj, string context, bool dotimeout = true) |
2616 | { | 2618 | { |
2617 | Interlocked.Increment(ref numTotalThreadFuncsCalled); | 2619 | Interlocked.Increment(ref numTotalThreadFuncsCalled); |
2618 | 2620 | ||
@@ -2634,7 +2636,7 @@ namespace OpenSim.Framework | |||
2634 | bool loggingEnabled = LogThreadPool > 0; | 2636 | bool loggingEnabled = LogThreadPool > 0; |
2635 | 2637 | ||
2636 | long threadFuncNum = Interlocked.Increment(ref nextThreadFuncNum); | 2638 | long threadFuncNum = Interlocked.Increment(ref nextThreadFuncNum); |
2637 | ThreadInfo threadInfo = new ThreadInfo(threadFuncNum, context); | 2639 | ThreadInfo threadInfo = new ThreadInfo(threadFuncNum, context, dotimeout); |
2638 | 2640 | ||
2639 | if (FireAndForgetMethod == FireAndForgetMethod.RegressionTest) | 2641 | if (FireAndForgetMethod == FireAndForgetMethod.RegressionTest) |
2640 | { | 2642 | { |
diff --git a/OpenSim/Framework/WebUtil.cs b/OpenSim/Framework/WebUtil.cs index 7b085d0..48078ad 100644 --- a/OpenSim/Framework/WebUtil.cs +++ b/OpenSim/Framework/WebUtil.cs | |||
@@ -1262,18 +1262,24 @@ namespace OpenSim.Framework | |||
1262 | { | 1262 | { |
1263 | if (hwr.StatusCode == HttpStatusCode.NotFound) | 1263 | if (hwr.StatusCode == HttpStatusCode.NotFound) |
1264 | return deserial; | 1264 | return deserial; |
1265 | |||
1265 | if (hwr.StatusCode == HttpStatusCode.Unauthorized) | 1266 | if (hwr.StatusCode == HttpStatusCode.Unauthorized) |
1266 | { | 1267 | { |
1267 | m_log.Error(string.Format( | 1268 | m_log.ErrorFormat("[SynchronousRestObjectRequester]: Web request {0} requires authentication", |
1268 | "[SynchronousRestObjectRequester]: Web request {0} requires authentication ", | 1269 | requestUrl); |
1269 | requestUrl)); | 1270 | } |
1270 | return deserial; | 1271 | else |
1272 | { | ||
1273 | m_log.WarnFormat("[SynchronousRestObjectRequester]: Web request {0} returned error: {1}", | ||
1274 | requestUrl, hwr.StatusCode); | ||
1271 | } | 1275 | } |
1272 | } | 1276 | } |
1273 | else | 1277 | else |
1274 | m_log.Error(string.Format( | 1278 | m_log.ErrorFormat( |
1275 | "[SynchronousRestObjectRequester]: WebException for {0} {1} {2} ", | 1279 | "[SynchronousRestObjectRequester]: WebException for {0} {1} {2} {3}", |
1276 | verb, requestUrl, typeof(TResponse).ToString()), e); | 1280 | verb, requestUrl, typeof(TResponse).ToString(), e.Message); |
1281 | |||
1282 | return deserial; | ||
1277 | } | 1283 | } |
1278 | } | 1284 | } |
1279 | catch (System.InvalidOperationException) | 1285 | catch (System.InvalidOperationException) |
diff --git a/OpenSim/Region/ClientStack/Linden/UDP/LLClientView.cs b/OpenSim/Region/ClientStack/Linden/UDP/LLClientView.cs index 1091078..54359eb 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 | |||
325 | /// </summary> | 325 | /// </summary> |
326 | public LLImageManager ImageManager { get; private set; } | 326 | public LLImageManager ImageManager { get; private set; } |
327 | 327 | ||
328 | public JobEngine m_asyncPacketProcess; | ||
328 | private readonly LLUDPServer m_udpServer; | 329 | private readonly LLUDPServer m_udpServer; |
329 | private readonly LLUDPClient m_udpClient; | 330 | private readonly LLUDPClient m_udpClient; |
330 | private readonly UUID m_sessionId; | 331 | private readonly UUID m_sessionId; |
@@ -378,7 +379,6 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
378 | protected Scene m_scene; | 379 | protected Scene m_scene; |
379 | protected string m_firstName; | 380 | protected string m_firstName; |
380 | protected string m_lastName; | 381 | protected string m_lastName; |
381 | protected Thread m_clientThread; | ||
382 | protected Vector3 m_startpos; | 382 | protected Vector3 m_startpos; |
383 | protected UUID m_activeGroupID; | 383 | protected UUID m_activeGroupID; |
384 | protected string m_activeGroupName = String.Empty; | 384 | protected string m_activeGroupName = String.Empty; |
@@ -529,7 +529,8 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
529 | m_prioritizer = new Prioritizer(m_scene); | 529 | m_prioritizer = new Prioritizer(m_scene); |
530 | 530 | ||
531 | RegisterLocalPacketHandlers(); | 531 | RegisterLocalPacketHandlers(); |
532 | 532 | string name = string.Format("AsyncInUDP-{0}",m_agentId.ToString()); | |
533 | m_asyncPacketProcess = new JobEngine(name, name, 10000); | ||
533 | IsActive = true; | 534 | IsActive = true; |
534 | } | 535 | } |
535 | 536 | ||
@@ -592,6 +593,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
592 | if (OnConnectionClosed != null) | 593 | if (OnConnectionClosed != null) |
593 | OnConnectionClosed(this); | 594 | OnConnectionClosed(this); |
594 | 595 | ||
596 | m_asyncPacketProcess.Stop(); | ||
595 | 597 | ||
596 | // Flush all of the packets out of the UDP server for this client | 598 | // Flush all of the packets out of the UDP server for this client |
597 | if (m_udpServer != null) | 599 | if (m_udpServer != null) |
@@ -778,12 +780,13 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
778 | cinfo.AsyncRequests[packet.Type.ToString()]++; | 780 | cinfo.AsyncRequests[packet.Type.ToString()]++; |
779 | 781 | ||
780 | object obj = new AsyncPacketProcess(this, pprocessor.method, packet); | 782 | object obj = new AsyncPacketProcess(this, pprocessor.method, packet); |
781 | 783 | /* | |
782 | if (pprocessor.InEngine) | 784 | if (pprocessor.InEngine) |
783 | m_udpServer.IpahEngine.QueueJob(packet.Type.ToString(), () => ProcessSpecificPacketAsync(obj)); | 785 | m_udpServer.IpahEngine.QueueJob(packet.Type.ToString(), () => ProcessSpecificPacketAsync(obj)); |
784 | else | 786 | else |
785 | Util.FireAndForget(ProcessSpecificPacketAsync, obj, packet.Type.ToString()); | 787 | Util.FireAndForget(ProcessSpecificPacketAsync, obj, packet.Type.ToString()); |
786 | 788 | */ | |
789 | m_asyncPacketProcess.QueueJob(packet.Type.ToString(), () => ProcessSpecificPacketAsync(obj)); | ||
787 | result = true; | 790 | result = true; |
788 | } | 791 | } |
789 | else | 792 | else |
@@ -841,6 +844,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
841 | 844 | ||
842 | public virtual void Start() | 845 | public virtual void Start() |
843 | { | 846 | { |
847 | m_asyncPacketProcess.Start(); | ||
844 | m_scene.AddNewAgent(this, PresenceType.User); | 848 | m_scene.AddNewAgent(this, PresenceType.User); |
845 | 849 | ||
846 | // RefreshGroupMembership(); | 850 | // RefreshGroupMembership(); |
@@ -6036,8 +6040,8 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
6036 | AddLocalPacketHandler(PacketType.ObjectExtraParams, HandleObjectExtraParams); | 6040 | AddLocalPacketHandler(PacketType.ObjectExtraParams, HandleObjectExtraParams); |
6037 | AddLocalPacketHandler(PacketType.ObjectDuplicate, HandleObjectDuplicate); | 6041 | AddLocalPacketHandler(PacketType.ObjectDuplicate, HandleObjectDuplicate); |
6038 | AddLocalPacketHandler(PacketType.RequestMultipleObjects, HandleRequestMultipleObjects); | 6042 | AddLocalPacketHandler(PacketType.RequestMultipleObjects, HandleRequestMultipleObjects); |
6039 | AddLocalPacketHandler(PacketType.ObjectSelect, HandleObjectSelect); | 6043 | AddLocalPacketHandler(PacketType.ObjectSelect, HandleObjectSelect, true, true); |
6040 | AddLocalPacketHandler(PacketType.ObjectDeselect, HandleObjectDeselect); | 6044 | AddLocalPacketHandler(PacketType.ObjectDeselect, HandleObjectDeselect, true, true); |
6041 | AddLocalPacketHandler(PacketType.ObjectPosition, HandleObjectPosition); | 6045 | AddLocalPacketHandler(PacketType.ObjectPosition, HandleObjectPosition); |
6042 | AddLocalPacketHandler(PacketType.ObjectScale, HandleObjectScale); | 6046 | AddLocalPacketHandler(PacketType.ObjectScale, HandleObjectScale); |
6043 | AddLocalPacketHandler(PacketType.ObjectRotation, HandleObjectRotation); | 6047 | AddLocalPacketHandler(PacketType.ObjectRotation, HandleObjectRotation); |
@@ -8030,19 +8034,41 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
8030 | return true; | 8034 | return true; |
8031 | } | 8035 | } |
8032 | 8036 | ||
8037 | Dictionary<uint, uint> objImageSeqs = null; | ||
8038 | double lastobjImageSeqsMS = 0.0; | ||
8039 | |||
8033 | private bool HandleObjectImage(IClientAPI sender, Packet Pack) | 8040 | private bool HandleObjectImage(IClientAPI sender, Packet Pack) |
8034 | { | 8041 | { |
8035 | ObjectImagePacket imagePack = (ObjectImagePacket)Pack; | 8042 | ObjectImagePacket imagePack = (ObjectImagePacket)Pack; |
8036 | 8043 | ||
8037 | UpdatePrimTexture handlerUpdatePrimTexture = null; | 8044 | UpdatePrimTexture handlerUpdatePrimTexture = OnUpdatePrimTexture; |
8045 | if (handlerUpdatePrimTexture == null) | ||
8046 | return true; | ||
8047 | |||
8048 | double now = Util.GetTimeStampMS(); | ||
8049 | if(objImageSeqs == null || ( now - lastobjImageSeqsMS > 30000.0)) | ||
8050 | { | ||
8051 | objImageSeqs = null; // yeah i know superstition... | ||
8052 | objImageSeqs = new Dictionary<uint, uint>(16); | ||
8053 | } | ||
8054 | |||
8055 | lastobjImageSeqsMS = now; | ||
8056 | uint seq = Pack.Header.Sequence; | ||
8057 | uint id; | ||
8058 | uint lastseq; | ||
8059 | |||
8060 | ObjectImagePacket.ObjectDataBlock o; | ||
8038 | for (int i = 0; i < imagePack.ObjectData.Length; i++) | 8061 | for (int i = 0; i < imagePack.ObjectData.Length; i++) |
8039 | { | 8062 | { |
8040 | handlerUpdatePrimTexture = OnUpdatePrimTexture; | 8063 | o = imagePack.ObjectData[i]; |
8041 | if (handlerUpdatePrimTexture != null) | 8064 | id = o.ObjectLocalID; |
8042 | { | 8065 | if(objImageSeqs.TryGetValue(id, out lastseq)) |
8043 | handlerUpdatePrimTexture(imagePack.ObjectData[i].ObjectLocalID, | 8066 | { |
8044 | imagePack.ObjectData[i].TextureEntry, this); | 8067 | if(seq <= lastseq) |
8045 | } | 8068 | continue; |
8069 | } | ||
8070 | objImageSeqs[id] = seq; | ||
8071 | handlerUpdatePrimTexture(id, o.TextureEntry, this); | ||
8046 | } | 8072 | } |
8047 | return true; | 8073 | return true; |
8048 | } | 8074 | } |
diff --git a/OpenSim/Region/ClientStack/Linden/UDP/LLUDPServer.cs b/OpenSim/Region/ClientStack/Linden/UDP/LLUDPServer.cs index ec51e28..b575ed9 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 | |||
312 | /// stack. Use zero to leave this value as the default</summary> | 312 | /// stack. Use zero to leave this value as the default</summary> |
313 | protected int m_recvBufferSize; | 313 | protected int m_recvBufferSize; |
314 | 314 | ||
315 | /// <summary>Flag to process packets asynchronously or synchronously</summary> | ||
316 | protected bool m_asyncPacketHandling; | ||
317 | |||
318 | /// <summary>Tracks whether or not a packet was sent each round so we know | 315 | /// <summary>Tracks whether or not a packet was sent each round so we know |
319 | /// whether or not to sleep</summary> | 316 | /// whether or not to sleep</summary> |
320 | protected bool m_packetSent; | 317 | protected bool m_packetSent; |
@@ -417,7 +414,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
417 | /// Queue some low priority but potentially high volume async requests so that they don't overwhelm available | 414 | /// Queue some low priority but potentially high volume async requests so that they don't overwhelm available |
418 | /// threadpool threads. | 415 | /// threadpool threads. |
419 | /// </summary> | 416 | /// </summary> |
420 | public JobEngine IpahEngine { get; protected set; } | 417 | // public JobEngine IpahEngine { get; protected set; } |
421 | 418 | ||
422 | /// <summary> | 419 | /// <summary> |
423 | /// Run queue empty processing within a single persistent thread. | 420 | /// Run queue empty processing within a single persistent thread. |
@@ -473,7 +470,6 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
473 | IConfig config = configSource.Configs["ClientStack.LindenUDP"]; | 470 | IConfig config = configSource.Configs["ClientStack.LindenUDP"]; |
474 | if (config != null) | 471 | if (config != null) |
475 | { | 472 | { |
476 | m_asyncPacketHandling = config.GetBoolean("async_packet_handling", true); | ||
477 | m_recvBufferSize = config.GetInt("client_socket_rcvbuf_size", 0); | 473 | m_recvBufferSize = config.GetInt("client_socket_rcvbuf_size", 0); |
478 | sceneThrottleBps = config.GetInt("scene_throttle_max_bps", 0); | 474 | sceneThrottleBps = config.GetInt("scene_throttle_max_bps", 0); |
479 | 475 | ||
@@ -531,7 +527,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
531 | { | 527 | { |
532 | StartInbound(); | 528 | StartInbound(); |
533 | StartOutbound(); | 529 | StartOutbound(); |
534 | IpahEngine.Start(); | 530 | // IpahEngine.Start(); |
535 | OqrEngine.Start(); | 531 | OqrEngine.Start(); |
536 | 532 | ||
537 | m_elapsedMSSinceLastStatReport = Environment.TickCount; | 533 | m_elapsedMSSinceLastStatReport = Environment.TickCount; |
@@ -540,10 +536,9 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
540 | public void StartInbound() | 536 | public void StartInbound() |
541 | { | 537 | { |
542 | m_log.InfoFormat( | 538 | m_log.InfoFormat( |
543 | "[LLUDPSERVER]: Starting inbound packet processing for the LLUDP server in {0} mode with UsePools = {1}", | 539 | "[LLUDPSERVER]: Starting inbound packet processing for the LLUDP server"); |
544 | m_asyncPacketHandling ? "asynchronous" : "synchronous", UsePools); | ||
545 | 540 | ||
546 | base.StartInbound(m_recvBufferSize, m_asyncPacketHandling); | 541 | base.StartInbound(m_recvBufferSize); |
547 | 542 | ||
548 | // This thread will process the packets received that are placed on the packetInbox | 543 | // This thread will process the packets received that are placed on the packetInbox |
549 | WorkManager.StartThread( | 544 | WorkManager.StartThread( |
@@ -577,7 +572,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
577 | m_log.Info("[LLUDPSERVER]: Shutting down the LLUDP server for " + Scene.Name); | 572 | m_log.Info("[LLUDPSERVER]: Shutting down the LLUDP server for " + Scene.Name); |
578 | base.StopOutbound(); | 573 | base.StopOutbound(); |
579 | base.StopInbound(); | 574 | base.StopInbound(); |
580 | IpahEngine.Stop(); | 575 | // IpahEngine.Stop(); |
581 | OqrEngine.Stop(); | 576 | OqrEngine.Stop(); |
582 | } | 577 | } |
583 | 578 | ||
@@ -696,12 +691,12 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
696 | 691 | ||
697 | Scene = (Scene)scene; | 692 | Scene = (Scene)scene; |
698 | m_location = new Location(Scene.RegionInfo.RegionHandle); | 693 | m_location = new Location(Scene.RegionInfo.RegionHandle); |
699 | 694 | /* | |
700 | IpahEngine | 695 | IpahEngine |
701 | = new JobEngine( | 696 | = new JobEngine( |
702 | string.Format("Incoming Packet Async Handling Engine ({0})", Scene.Name), | 697 | string.Format("Incoming Packet Async Handling Engine ({0})", Scene.Name), |
703 | "INCOMING PACKET ASYNC HANDLING ENGINE"); | 698 | "INCOMING PACKET ASYNC HANDLING ENGINE"); |
704 | 699 | */ | |
705 | OqrEngine | 700 | OqrEngine |
706 | = new JobEngine( | 701 | = new JobEngine( |
707 | string.Format("Outgoing Queue Refill Engine ({0})", Scene.Name), | 702 | string.Format("Outgoing Queue Refill Engine ({0})", Scene.Name), |
@@ -786,7 +781,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
786 | MeasuresOfInterest.AverageChangeOverTime, | 781 | MeasuresOfInterest.AverageChangeOverTime, |
787 | stat => stat.Value = GetTotalQueuedOutgoingPackets(), | 782 | stat => stat.Value = GetTotalQueuedOutgoingPackets(), |
788 | StatVerbosity.Info)); | 783 | StatVerbosity.Info)); |
789 | 784 | /* | |
790 | StatsManager.RegisterStat( | 785 | StatsManager.RegisterStat( |
791 | new Stat( | 786 | new Stat( |
792 | "IncomingPacketAsyncRequestsWaiting", | 787 | "IncomingPacketAsyncRequestsWaiting", |
@@ -799,7 +794,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
799 | MeasuresOfInterest.None, | 794 | MeasuresOfInterest.None, |
800 | stat => stat.Value = IpahEngine.JobsWaiting, | 795 | stat => stat.Value = IpahEngine.JobsWaiting, |
801 | StatVerbosity.Debug)); | 796 | StatVerbosity.Debug)); |
802 | 797 | */ | |
803 | StatsManager.RegisterStat( | 798 | StatsManager.RegisterStat( |
804 | new Stat( | 799 | new Stat( |
805 | "OQRERequestsWaiting", | 800 | "OQRERequestsWaiting", |
@@ -1227,7 +1222,8 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
1227 | outgoingPacket.SequenceNumber, isReliable, isResend, udpClient.AgentID, Scene.Name); | 1222 | outgoingPacket.SequenceNumber, isReliable, isResend, udpClient.AgentID, Scene.Name); |
1228 | 1223 | ||
1229 | // Put the UDP payload on the wire | 1224 | // Put the UDP payload on the wire |
1230 | AsyncBeginSend(buffer); | 1225 | // AsyncBeginSend(buffer); |
1226 | SyncSend(buffer); | ||
1231 | 1227 | ||
1232 | // Keep track of when this packet was sent out (right now) | 1228 | // Keep track of when this packet was sent out (right now) |
1233 | outgoingPacket.TickCount = Environment.TickCount & Int32.MaxValue; | 1229 | outgoingPacket.TickCount = Environment.TickCount & Int32.MaxValue; |
@@ -1912,7 +1908,8 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
1912 | 1908 | ||
1913 | Buffer.BlockCopy(packetData, 0, buffer.Data, 0, length); | 1909 | Buffer.BlockCopy(packetData, 0, buffer.Data, 0, length); |
1914 | 1910 | ||
1915 | AsyncBeginSend(buffer); | 1911 | // AsyncBeginSend(buffer); |
1912 | SyncSend(buffer); | ||
1916 | } | 1913 | } |
1917 | 1914 | ||
1918 | protected bool IsClientAuthorized(UseCircuitCodePacket useCircuitCode, out AuthenticateResponse sessionInfo) | 1915 | 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 35a0711..8dd96d6 100644 --- a/OpenSim/Region/ClientStack/Linden/UDP/OpenSimUDPBase.cs +++ b/OpenSim/Region/ClientStack/Linden/UDP/OpenSimUDPBase.cs | |||
@@ -57,9 +57,6 @@ namespace OpenMetaverse | |||
57 | /// <summary>UDP socket, used in either client or server mode</summary> | 57 | /// <summary>UDP socket, used in either client or server mode</summary> |
58 | private Socket m_udpSocket; | 58 | private Socket m_udpSocket; |
59 | 59 | ||
60 | /// <summary>Flag to process packets asynchronously or synchronously</summary> | ||
61 | private bool m_asyncPacketHandling; | ||
62 | |||
63 | /// <summary> | 60 | /// <summary> |
64 | /// Are we to use object pool(s) to reduce memory churn when receiving data? | 61 | /// Are we to use object pool(s) to reduce memory churn when receiving data? |
65 | /// </summary> | 62 | /// </summary> |
@@ -205,10 +202,8 @@ namespace OpenMetaverse | |||
205 | /// manner (not throwing an exception when the remote side resets the | 202 | /// manner (not throwing an exception when the remote side resets the |
206 | /// connection). This call is ignored on Mono where the flag is not | 203 | /// connection). This call is ignored on Mono where the flag is not |
207 | /// necessary</remarks> | 204 | /// necessary</remarks> |
208 | public virtual void StartInbound(int recvBufferSize, bool asyncPacketHandling) | 205 | public virtual void StartInbound(int recvBufferSize) |
209 | { | 206 | { |
210 | m_asyncPacketHandling = asyncPacketHandling; | ||
211 | |||
212 | if (!IsRunningInbound) | 207 | if (!IsRunningInbound) |
213 | { | 208 | { |
214 | m_log.DebugFormat("[UDPBASE]: Starting inbound UDP loop"); | 209 | m_log.DebugFormat("[UDPBASE]: Starting inbound UDP loop"); |
@@ -407,12 +402,7 @@ namespace OpenMetaverse | |||
407 | if (IsRunningInbound) | 402 | if (IsRunningInbound) |
408 | { | 403 | { |
409 | UdpReceives++; | 404 | UdpReceives++; |
410 | 405 | ||
411 | // Asynchronous mode will start another receive before the | ||
412 | // callback for this packet is even fired. Very parallel :-) | ||
413 | if (m_asyncPacketHandling) | ||
414 | AsyncBeginReceive(); | ||
415 | |||
416 | try | 406 | try |
417 | { | 407 | { |
418 | // get the buffer that was created in AsyncBeginReceive | 408 | // get the buffer that was created in AsyncBeginReceive |
@@ -469,10 +459,7 @@ namespace OpenMetaverse | |||
469 | // if (UsePools) | 459 | // if (UsePools) |
470 | // Pool.ReturnObject(buffer); | 460 | // Pool.ReturnObject(buffer); |
471 | 461 | ||
472 | // Synchronous mode waits until the packet callback completes | 462 | AsyncBeginReceive(); |
473 | // before starting the receive to fetch another packet | ||
474 | if (!m_asyncPacketHandling) | ||
475 | AsyncBeginReceive(); | ||
476 | } | 463 | } |
477 | } | 464 | } |
478 | } | 465 | } |
@@ -500,7 +487,7 @@ namespace OpenMetaverse | |||
500 | } | 487 | } |
501 | catch (SocketException) { } | 488 | catch (SocketException) { } |
502 | catch (ObjectDisposedException) { } | 489 | catch (ObjectDisposedException) { } |
503 | // } | 490 | // } |
504 | } | 491 | } |
505 | 492 | ||
506 | void AsyncEndSend(IAsyncResult result) | 493 | void AsyncEndSend(IAsyncResult result) |
@@ -515,5 +502,25 @@ namespace OpenMetaverse | |||
515 | catch (SocketException) { } | 502 | catch (SocketException) { } |
516 | catch (ObjectDisposedException) { } | 503 | catch (ObjectDisposedException) { } |
517 | } | 504 | } |
505 | |||
506 | public void SyncSend(UDPPacketBuffer buf) | ||
507 | { | ||
508 | try | ||
509 | { | ||
510 | m_udpSocket.SendTo( | ||
511 | buf.Data, | ||
512 | 0, | ||
513 | buf.DataLength, | ||
514 | SocketFlags.None, | ||
515 | buf.RemoteEndPoint | ||
516 | ); | ||
517 | UdpSends++; | ||
518 | } | ||
519 | catch (SocketException e) | ||
520 | { | ||
521 | m_log.Warn("[UDPBASE]: sync send SocketException {0} " + e.Message); | ||
522 | } | ||
523 | catch (ObjectDisposedException) { } | ||
524 | } | ||
518 | } | 525 | } |
519 | } | 526 | } |
diff --git a/OpenSim/Region/ClientStack/Linden/UDP/Tests/BasicCircuitTests.cs b/OpenSim/Region/ClientStack/Linden/UDP/Tests/BasicCircuitTests.cs index 0e1a9e3..eb262d2 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 | |||
91 | /// <summary> | 91 | /// <summary> |
92 | /// Test adding a client to the stack | 92 | /// Test adding a client to the stack |
93 | /// </summary> | 93 | /// </summary> |
94 | /* | ||
94 | [Test] | 95 | [Test] |
95 | public void TestAddClient() | 96 | public void TestAddClient() |
96 | { | 97 | { |
@@ -165,7 +166,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP.Tests | |||
165 | ScenePresence spAfterAckTimeout = m_scene.GetScenePresence(sp.UUID); | 166 | ScenePresence spAfterAckTimeout = m_scene.GetScenePresence(sp.UUID); |
166 | Assert.That(spAfterAckTimeout, Is.Null); | 167 | Assert.That(spAfterAckTimeout, Is.Null); |
167 | } | 168 | } |
168 | 169 | */ | |
169 | // /// <summary> | 170 | // /// <summary> |
170 | // /// Test removing a client from the stack | 171 | // /// Test removing a client from the stack |
171 | // /// </summary> | 172 | // /// </summary> |
diff --git a/OpenSim/Region/CoreModules/Framework/EntityTransfer/HGEntityTransferModule.cs b/OpenSim/Region/CoreModules/Framework/EntityTransfer/HGEntityTransferModule.cs index 1ce6927..56c654f 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 | |||
163 | m_incomingSceneObjectEngine | 163 | m_incomingSceneObjectEngine |
164 | = new JobEngine( | 164 | = new JobEngine( |
165 | string.Format("HG Incoming Scene Object Engine ({0})", scene.Name), | 165 | string.Format("HG Incoming Scene Object Engine ({0})", scene.Name), |
166 | "HG INCOMING SCENE OBJECT ENGINE"); | 166 | "HG INCOMING SCENE OBJECT ENGINE", 30000); |
167 | 167 | ||
168 | StatsManager.RegisterStat( | 168 | StatsManager.RegisterStat( |
169 | new Stat( | 169 | new Stat( |
diff --git a/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs b/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs index bba7a96..057ca17 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 | |||
2865 | root.SendPropertiesToClient(sp.ControllingClient); | 2865 | root.SendPropertiesToClient(sp.ControllingClient); |
2866 | if (oldUsePhysics && (root.Flags & PrimFlags.Physics) == 0) | 2866 | if (oldUsePhysics && (root.Flags & PrimFlags.Physics) == 0) |
2867 | { | 2867 | { |
2868 | sp.ControllingClient.SendAlertMessage("Object physics canceled"); | 2868 | sp.ControllingClient.SendAlertMessage("Object physics cancelled"); |
2869 | } | 2869 | } |
2870 | } | 2870 | } |
2871 | } | 2871 | } |
diff --git a/OpenSim/Region/Framework/Scenes/SceneGraph.cs b/OpenSim/Region/Framework/Scenes/SceneGraph.cs index 96b8c8b..ae827f4 100755 --- a/OpenSim/Region/Framework/Scenes/SceneGraph.cs +++ b/OpenSim/Region/Framework/Scenes/SceneGraph.cs | |||
@@ -1604,13 +1604,16 @@ namespace OpenSim.Region.Framework.Scenes | |||
1604 | /// <param name="remoteClient"></param> | 1604 | /// <param name="remoteClient"></param> |
1605 | protected internal void UpdatePrimTexture(uint localID, byte[] texture, IClientAPI remoteClient) | 1605 | protected internal void UpdatePrimTexture(uint localID, byte[] texture, IClientAPI remoteClient) |
1606 | { | 1606 | { |
1607 | SceneObjectGroup group = GetGroupByPrim(localID); | 1607 | SceneObjectPart part = GetSceneObjectPart(localID); |
1608 | if(part == null) | ||
1609 | return; | ||
1608 | 1610 | ||
1609 | if (group != null) | 1611 | SceneObjectGroup group = part.ParentGroup; |
1612 | if (group != null && !group.IsDeleted) | ||
1610 | { | 1613 | { |
1611 | if (m_parentScene.Permissions.CanEditObject(group, remoteClient)) | 1614 | if (m_parentScene.Permissions.CanEditObject(group, remoteClient)) |
1612 | { | 1615 | { |
1613 | group.UpdateTextureEntry(localID, texture); | 1616 | part.UpdateTextureEntry(texture); |
1614 | } | 1617 | } |
1615 | } | 1618 | } |
1616 | } | 1619 | } |
@@ -1661,8 +1664,11 @@ namespace OpenSim.Region.Framework.Scenes | |||
1661 | 1664 | ||
1662 | if (wantedPhys != group.UsesPhysics && remoteClient != null) | 1665 | if (wantedPhys != group.UsesPhysics && remoteClient != null) |
1663 | { | 1666 | { |
1664 | remoteClient.SendAlertMessage("Object physics canceled because exceeds the limit of " + | 1667 | if(m_parentScene.m_linksetPhysCapacity != 0) |
1665 | m_parentScene.m_linksetPhysCapacity + " physical prims with shape type not set to None"); | 1668 | remoteClient.SendAlertMessage("Object physics cancelled because it exceeds limits for physical prims, either size or number of primswith shape type not set to None"); |
1669 | else | ||
1670 | remoteClient.SendAlertMessage("Object physics cancelled because it exceeds size limits for physical prims"); | ||
1671 | |||
1666 | group.RootPart.ScheduleFullUpdate(); | 1672 | group.RootPart.ScheduleFullUpdate(); |
1667 | } | 1673 | } |
1668 | } | 1674 | } |
diff --git a/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs b/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs index 1695d9b..fdfe8ae 100644 --- a/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs +++ b/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs | |||
@@ -4129,20 +4129,6 @@ namespace OpenSim.Region.Framework.Scenes | |||
4129 | return Parts.Count(); | 4129 | return Parts.Count(); |
4130 | } | 4130 | } |
4131 | 4131 | ||
4132 | /// <summary> | ||
4133 | /// Update the texture entry for this part | ||
4134 | /// </summary> | ||
4135 | /// <param name="localID"></param> | ||
4136 | /// <param name="textureEntry"></param> | ||
4137 | public void UpdateTextureEntry(uint localID, byte[] textureEntry) | ||
4138 | { | ||
4139 | SceneObjectPart part = GetPart(localID); | ||
4140 | if (part != null) | ||
4141 | { | ||
4142 | part.UpdateTextureEntry(textureEntry); | ||
4143 | } | ||
4144 | } | ||
4145 | |||
4146 | public void AdjustChildPrimPermissions(bool forceTaskInventoryPermissive) | 4132 | public void AdjustChildPrimPermissions(bool forceTaskInventoryPermissive) |
4147 | { | 4133 | { |
4148 | uint newOwnerMask = (uint)(PermissionMask.All | PermissionMask.Export) & 0xfffffff0; // Mask folded bits | 4134 | 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 61aa915..c2eac24 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 | |||
5016 | if (newTex.FaceTextures[i] != null) | 5016 | if (newTex.FaceTextures[i] != null) |
5017 | newFace = newTex.FaceTextures[i]; | 5017 | newFace = newTex.FaceTextures[i]; |
5018 | 5018 | ||
5019 | if (oldFace.TextureID != newFace.TextureID) | ||
5020 | changeFlags |= Changed.TEXTURE; | ||
5021 | |||
5019 | Color4 oldRGBA = oldFace.RGBA; | 5022 | Color4 oldRGBA = oldFace.RGBA; |
5020 | Color4 newRGBA = newFace.RGBA; | 5023 | Color4 newRGBA = newFace.RGBA; |
5021 | 5024 | ||
@@ -5025,9 +5028,6 @@ SendFullUpdateToClient(remoteClient, Position) ignores position parameter | |||
5025 | oldRGBA.A != newRGBA.A) | 5028 | oldRGBA.A != newRGBA.A) |
5026 | changeFlags |= Changed.COLOR; | 5029 | changeFlags |= Changed.COLOR; |
5027 | 5030 | ||
5028 | if (oldFace.TextureID != newFace.TextureID) | ||
5029 | changeFlags |= Changed.TEXTURE; | ||
5030 | |||
5031 | // Max change, skip the rest of testing | 5031 | // Max change, skip the rest of testing |
5032 | if (changeFlags == (Changed.TEXTURE | Changed.COLOR)) | 5032 | if (changeFlags == (Changed.TEXTURE | Changed.COLOR)) |
5033 | break; | 5033 | break; |
@@ -5053,17 +5053,11 @@ SendFullUpdateToClient(remoteClient, Position) ignores position parameter | |||
5053 | m_shape.TextureEntry = newTex.GetBytes(); | 5053 | m_shape.TextureEntry = newTex.GetBytes(); |
5054 | if (changeFlags != 0) | 5054 | if (changeFlags != 0) |
5055 | TriggerScriptChangedEvent(changeFlags); | 5055 | TriggerScriptChangedEvent(changeFlags); |
5056 | UpdateFlag = UpdateRequired.FULL; | ||
5057 | ParentGroup.HasGroupChanged = true; | 5056 | ParentGroup.HasGroupChanged = true; |
5058 | |||
5059 | //This is madness.. | ||
5060 | //ParentGroup.ScheduleGroupForFullUpdate(); | ||
5061 | //This is sparta | ||
5062 | ScheduleFullUpdate(); | 5057 | ScheduleFullUpdate(); |
5063 | } | 5058 | } |
5064 | } | 5059 | } |
5065 | 5060 | ||
5066 | |||
5067 | internal void UpdatePhysicsSubscribedEvents() | 5061 | internal void UpdatePhysicsSubscribedEvents() |
5068 | { | 5062 | { |
5069 | PhysicsActor pa = PhysActor; | 5063 | PhysicsActor pa = PhysActor; |
diff --git a/OpenSim/Region/Framework/Scenes/ScenePresence.cs b/OpenSim/Region/Framework/Scenes/ScenePresence.cs index 47af3b8..7e3adb9 100644 --- a/OpenSim/Region/Framework/Scenes/ScenePresence.cs +++ b/OpenSim/Region/Framework/Scenes/ScenePresence.cs | |||
@@ -2280,18 +2280,13 @@ namespace OpenSim.Region.Framework.Scenes | |||
2280 | m_lastChildAgentUpdateDrawDistance = DrawDistance; | 2280 | m_lastChildAgentUpdateDrawDistance = DrawDistance; |
2281 | m_lastChildAgentUpdatePosition = AbsolutePosition; | 2281 | m_lastChildAgentUpdatePosition = AbsolutePosition; |
2282 | m_childUpdatesBusy = false; // allow them | 2282 | m_childUpdatesBusy = false; // allow them |
2283 | |||
2284 | |||
2285 | } | 2283 | } |
2286 | 2284 | ||
2287 | m_log.DebugFormat("[CompleteMovement] openChildAgents: {0}ms", Util.EnvironmentTickCountSubtract(ts)); | 2285 | m_log.DebugFormat("[CompleteMovement] openChildAgents: {0}ms", Util.EnvironmentTickCountSubtract(ts)); |
2288 | 2286 | ||
2289 | |||
2290 | |||
2291 | // send the rest of the world | 2287 | // send the rest of the world |
2292 | if (m_teleportFlags > 0 && !IsNPC || m_currentParcelHide) | 2288 | if (m_teleportFlags > 0 && !IsNPC || m_currentParcelHide) |
2293 | SendInitialDataToMe(); | 2289 | SendInitialDataToMe(); |
2294 | |||
2295 | 2290 | ||
2296 | // priority uses avatar position only | 2291 | // priority uses avatar position only |
2297 | // m_reprioritizationLastPosition = AbsolutePosition; | 2292 | // m_reprioritizationLastPosition = AbsolutePosition; |
@@ -2958,31 +2953,32 @@ namespace OpenSim.Region.Framework.Scenes | |||
2958 | Dir_ControlFlags.DIR_CONTROL_FLAG_DOWN)); | 2953 | Dir_ControlFlags.DIR_CONTROL_FLAG_DOWN)); |
2959 | 2954 | ||
2960 | MovementFlag &= noMovFlagsMask; | 2955 | MovementFlag &= noMovFlagsMask; |
2961 | AgentControlFlags &= noMovFlagsMask; | 2956 | uint tmpAgentControlFlags = (uint)m_AgentControlFlags; |
2957 | tmpAgentControlFlags &= noMovFlagsMask; | ||
2962 | 2958 | ||
2963 | if (LocalVectorToTarget3D.X < 0) //MoveBack | 2959 | if (LocalVectorToTarget3D.X < 0) //MoveBack |
2964 | { | 2960 | { |
2965 | MovementFlag |= (uint)Dir_ControlFlags.DIR_CONTROL_FLAG_BACK; | 2961 | MovementFlag |= (uint)Dir_ControlFlags.DIR_CONTROL_FLAG_BACK; |
2966 | AgentControlFlags |= (uint)Dir_ControlFlags.DIR_CONTROL_FLAG_BACK; | 2962 | tmpAgentControlFlags |= (uint)Dir_ControlFlags.DIR_CONTROL_FLAG_BACK; |
2967 | updated = true; | 2963 | updated = true; |
2968 | } | 2964 | } |
2969 | else if (LocalVectorToTarget3D.X > 0) //Move Forward | 2965 | else if (LocalVectorToTarget3D.X > 0) //Move Forward |
2970 | { | 2966 | { |
2971 | MovementFlag |= (uint)Dir_ControlFlags.DIR_CONTROL_FLAG_FORWARD; | 2967 | MovementFlag |= (uint)Dir_ControlFlags.DIR_CONTROL_FLAG_FORWARD; |
2972 | AgentControlFlags |= (uint)Dir_ControlFlags.DIR_CONTROL_FLAG_FORWARD; | 2968 | tmpAgentControlFlags |= (uint)Dir_ControlFlags.DIR_CONTROL_FLAG_FORWARD; |
2973 | updated = true; | 2969 | updated = true; |
2974 | } | 2970 | } |
2975 | 2971 | ||
2976 | if (LocalVectorToTarget3D.Y > 0) //MoveLeft | 2972 | if (LocalVectorToTarget3D.Y > 0) //MoveLeft |
2977 | { | 2973 | { |
2978 | MovementFlag |= (uint)Dir_ControlFlags.DIR_CONTROL_FLAG_LEFT; | 2974 | MovementFlag |= (uint)Dir_ControlFlags.DIR_CONTROL_FLAG_LEFT; |
2979 | AgentControlFlags |= (uint)Dir_ControlFlags.DIR_CONTROL_FLAG_LEFT; | 2975 | tmpAgentControlFlags |= (uint)Dir_ControlFlags.DIR_CONTROL_FLAG_LEFT; |
2980 | updated = true; | 2976 | updated = true; |
2981 | } | 2977 | } |
2982 | else if (LocalVectorToTarget3D.Y < 0) //MoveRight | 2978 | else if (LocalVectorToTarget3D.Y < 0) //MoveRight |
2983 | { | 2979 | { |
2984 | MovementFlag |= (uint)Dir_ControlFlags.DIR_CONTROL_FLAG_RIGHT; | 2980 | MovementFlag |= (uint)Dir_ControlFlags.DIR_CONTROL_FLAG_RIGHT; |
2985 | AgentControlFlags |= (uint)Dir_ControlFlags.DIR_CONTROL_FLAG_RIGHT; | 2981 | tmpAgentControlFlags |= (uint)Dir_ControlFlags.DIR_CONTROL_FLAG_RIGHT; |
2986 | updated = true; | 2982 | updated = true; |
2987 | } | 2983 | } |
2988 | 2984 | ||
@@ -3006,6 +3002,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
3006 | // "[SCENE PRESENCE]: HandleMoveToTargetUpdate adding {0} to move vector {1} for {2}", | 3002 | // "[SCENE PRESENCE]: HandleMoveToTargetUpdate adding {0} to move vector {1} for {2}", |
3007 | // LocalVectorToTarget3D, agent_control_v3, Name); | 3003 | // LocalVectorToTarget3D, agent_control_v3, Name); |
3008 | 3004 | ||
3005 | m_AgentControlFlags = (AgentManager.ControlFlags) tmpAgentControlFlags; | ||
3009 | agent_control_v3 += LocalVectorToTarget3D; | 3006 | agent_control_v3 += LocalVectorToTarget3D; |
3010 | } | 3007 | } |
3011 | catch (Exception e) | 3008 | catch (Exception e) |
@@ -4970,8 +4967,8 @@ namespace OpenSim.Region.Framework.Scenes | |||
4970 | 4967 | ||
4971 | // if (m_updateCount > 0) | 4968 | // if (m_updateCount > 0) |
4972 | // { | 4969 | // { |
4973 | if (Animator != null && Animator.UpdateMovementAnimations()) | 4970 | // if (Animator != null && Animator.UpdateMovementAnimations()) |
4974 | TriggerScenePresenceUpdated(); | 4971 | // TriggerScenePresenceUpdated(); |
4975 | // m_updateCount--; | 4972 | // m_updateCount--; |
4976 | // } | 4973 | // } |
4977 | 4974 | ||
diff --git a/OpenSim/Region/Framework/Scenes/Tests/ScenePresenceAnimationTests.cs b/OpenSim/Region/Framework/Scenes/Tests/ScenePresenceAnimationTests.cs index 42d91b9..d650c43 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 | |||
60 | TestScene scene = new SceneHelpers().SetupScene(); | 60 | TestScene scene = new SceneHelpers().SetupScene(); |
61 | ScenePresence sp = SceneHelpers.AddScenePresence(scene, TestHelpers.ParseTail(0x1)); | 61 | ScenePresence sp = SceneHelpers.AddScenePresence(scene, TestHelpers.ParseTail(0x1)); |
62 | sp.Flying = true; | 62 | sp.Flying = true; |
63 | sp.PhysicsCollisionUpdate(new CollisionEventUpdate()); | 63 | sp.Animator.UpdateMovementAnimations(); |
64 | 64 | ||
65 | Assert.That(sp.Animator.CurrentMovementAnimation, Is.EqualTo("HOVER")); | 65 | Assert.That(sp.Animator.CurrentMovementAnimation, Is.EqualTo("HOVER")); |
66 | } | 66 | } |
diff --git a/OpenSim/Region/PhysicsModules/ubOde/ODEMeshWorker.cs b/OpenSim/Region/PhysicsModules/ubOde/ODEMeshWorker.cs index a5ee2c9..dc87a78 100644 --- a/OpenSim/Region/PhysicsModules/ubOde/ODEMeshWorker.cs +++ b/OpenSim/Region/PhysicsModules/ubOde/ODEMeshWorker.cs | |||
@@ -80,7 +80,7 @@ namespace OpenSim.Region.PhysicsModule.ubOde | |||
80 | public float MeshSculptphysicalLOD = 32; | 80 | public float MeshSculptphysicalLOD = 32; |
81 | 81 | ||
82 | 82 | ||
83 | private OpenSim.Framework.BlockingQueue<ODEPhysRepData> createqueue = new OpenSim.Framework.BlockingQueue<ODEPhysRepData>(); | 83 | private OpenSim.Framework.BlockingQueue<ODEPhysRepData> workQueue = new OpenSim.Framework.BlockingQueue<ODEPhysRepData>(); |
84 | private bool m_running; | 84 | private bool m_running; |
85 | 85 | ||
86 | private Thread m_thread; | 86 | private Thread m_thread; |
@@ -110,7 +110,7 @@ namespace OpenSim.Region.PhysicsModule.ubOde | |||
110 | 110 | ||
111 | while(m_running) | 111 | while(m_running) |
112 | { | 112 | { |
113 | ODEPhysRepData nextRep = createqueue.Dequeue(); | 113 | ODEPhysRepData nextRep = workQueue.Dequeue(); |
114 | if(!m_running) | 114 | if(!m_running) |
115 | return; | 115 | return; |
116 | if (nextRep == null) | 116 | if (nextRep == null) |
@@ -139,7 +139,7 @@ namespace OpenSim.Region.PhysicsModule.ubOde | |||
139 | try | 139 | try |
140 | { | 140 | { |
141 | m_thread.Abort(); | 141 | m_thread.Abort(); |
142 | createqueue.Clear(); | 142 | workQueue.Clear(); |
143 | } | 143 | } |
144 | catch | 144 | catch |
145 | { | 145 | { |
@@ -196,7 +196,7 @@ namespace OpenSim.Region.PhysicsModule.ubOde | |||
196 | repData.meshState = MeshState.loadingAsset; | 196 | repData.meshState = MeshState.loadingAsset; |
197 | 197 | ||
198 | repData.comand = meshWorkerCmnds.getmesh; | 198 | repData.comand = meshWorkerCmnds.getmesh; |
199 | createqueue.Enqueue(repData); | 199 | workQueue.Enqueue(repData); |
200 | } | 200 | } |
201 | } | 201 | } |
202 | 202 | ||
@@ -242,7 +242,7 @@ namespace OpenSim.Region.PhysicsModule.ubOde | |||
242 | if (needsMeshing(repData)) // no need for pbs now? | 242 | if (needsMeshing(repData)) // no need for pbs now? |
243 | { | 243 | { |
244 | repData.comand = meshWorkerCmnds.changefull; | 244 | repData.comand = meshWorkerCmnds.changefull; |
245 | createqueue.Enqueue(repData); | 245 | workQueue.Enqueue(repData); |
246 | } | 246 | } |
247 | } | 247 | } |
248 | else | 248 | else |
diff --git a/OpenSim/Region/PhysicsModules/ubOde/ODEPrim.cs b/OpenSim/Region/PhysicsModules/ubOde/ODEPrim.cs index 9bf71f7..4bed0d2 100644 --- a/OpenSim/Region/PhysicsModules/ubOde/ODEPrim.cs +++ b/OpenSim/Region/PhysicsModules/ubOde/ODEPrim.cs | |||
@@ -165,6 +165,7 @@ namespace OpenSim.Region.PhysicsModule.ubOde | |||
165 | 165 | ||
166 | private float m_density; | 166 | private float m_density; |
167 | private byte m_shapetype; | 167 | private byte m_shapetype; |
168 | private byte m_fakeShapetype; | ||
168 | public bool _zeroFlag; | 169 | public bool _zeroFlag; |
169 | private bool m_lastUpdateSent; | 170 | private bool m_lastUpdateSent; |
170 | 171 | ||
@@ -420,7 +421,7 @@ namespace OpenSim.Region.PhysicsModule.ubOde | |||
420 | { | 421 | { |
421 | if (value.IsFinite()) | 422 | if (value.IsFinite()) |
422 | { | 423 | { |
423 | _parent_scene.m_meshWorker.ChangeActorPhysRep(this, _pbs, value, m_shapetype); | 424 | _parent_scene.m_meshWorker.ChangeActorPhysRep(this, _pbs, value, m_fakeShapetype); |
424 | } | 425 | } |
425 | else | 426 | else |
426 | { | 427 | { |
@@ -630,7 +631,7 @@ namespace OpenSim.Region.PhysicsModule.ubOde | |||
630 | set | 631 | set |
631 | { | 632 | { |
632 | // AddChange(changes.Shape, value); | 633 | // AddChange(changes.Shape, value); |
633 | _parent_scene.m_meshWorker.ChangeActorPhysRep(this, value, _size, m_shapetype); | 634 | _parent_scene.m_meshWorker.ChangeActorPhysRep(this, value, _size, m_fakeShapetype); |
634 | } | 635 | } |
635 | } | 636 | } |
636 | 637 | ||
@@ -638,11 +639,11 @@ namespace OpenSim.Region.PhysicsModule.ubOde | |||
638 | { | 639 | { |
639 | get | 640 | get |
640 | { | 641 | { |
641 | return m_shapetype; | 642 | return m_fakeShapetype; |
642 | } | 643 | } |
643 | set | 644 | set |
644 | { | 645 | { |
645 | m_shapetype = value; | 646 | m_fakeShapetype = value; |
646 | _parent_scene.m_meshWorker.ChangeActorPhysRep(this, _pbs, _size, value); | 647 | _parent_scene.m_meshWorker.ChangeActorPhysRep(this, _pbs, _size, value); |
647 | } | 648 | } |
648 | } | 649 | } |
@@ -1329,7 +1330,7 @@ namespace OpenSim.Region.PhysicsModule.ubOde | |||
1329 | 1330 | ||
1330 | _triMeshData = IntPtr.Zero; | 1331 | _triMeshData = IntPtr.Zero; |
1331 | 1332 | ||
1332 | m_shapetype = _shapeType; | 1333 | m_fakeShapetype = _shapeType; |
1333 | 1334 | ||
1334 | m_lastdoneSelected = false; | 1335 | m_lastdoneSelected = false; |
1335 | m_isSelected = false; | 1336 | m_isSelected = false; |
@@ -1346,7 +1347,7 @@ namespace OpenSim.Region.PhysicsModule.ubOde | |||
1346 | AddChange(changes.Add, null); | 1347 | AddChange(changes.Add, null); |
1347 | 1348 | ||
1348 | // get basic mass parameters | 1349 | // get basic mass parameters |
1349 | ODEPhysRepData repData = _parent_scene.m_meshWorker.NewActorPhysRep(this, _pbs, _size, m_shapetype); | 1350 | ODEPhysRepData repData = _parent_scene.m_meshWorker.NewActorPhysRep(this, _pbs, _size, _shapeType); |
1350 | 1351 | ||
1351 | primVolume = repData.volume; | 1352 | primVolume = repData.volume; |
1352 | m_OBB = repData.OBB; | 1353 | m_OBB = repData.OBB; |
@@ -3161,7 +3162,6 @@ namespace OpenSim.Region.PhysicsModule.ubOde | |||
3161 | { | 3162 | { |
3162 | _size = repData.size; //?? | 3163 | _size = repData.size; //?? |
3163 | _pbs = repData.pbs; | 3164 | _pbs = repData.pbs; |
3164 | m_shapetype = repData.shapetype; | ||
3165 | 3165 | ||
3166 | m_mesh = repData.mesh; | 3166 | m_mesh = repData.mesh; |
3167 | 3167 | ||
@@ -3200,9 +3200,11 @@ namespace OpenSim.Region.PhysicsModule.ubOde | |||
3200 | { | 3200 | { |
3201 | repData.size = _size; | 3201 | repData.size = _size; |
3202 | repData.pbs = _pbs; | 3202 | repData.pbs = _pbs; |
3203 | repData.shapetype = m_shapetype; | 3203 | repData.shapetype = m_fakeShapetype; |
3204 | _parent_scene.m_meshWorker.RequestMesh(repData); | 3204 | _parent_scene.m_meshWorker.RequestMesh(repData); |
3205 | } | 3205 | } |
3206 | else | ||
3207 | m_shapetype = repData.shapetype; | ||
3206 | } | 3208 | } |
3207 | 3209 | ||
3208 | private void changePhysRepData(ODEPhysRepData repData) | 3210 | private void changePhysRepData(ODEPhysRepData repData) |
@@ -3236,7 +3238,6 @@ namespace OpenSim.Region.PhysicsModule.ubOde | |||
3236 | 3238 | ||
3237 | _size = repData.size; | 3239 | _size = repData.size; |
3238 | _pbs = repData.pbs; | 3240 | _pbs = repData.pbs; |
3239 | m_shapetype = repData.shapetype; | ||
3240 | 3241 | ||
3241 | m_mesh = repData.mesh; | 3242 | m_mesh = repData.mesh; |
3242 | 3243 | ||
@@ -3287,9 +3288,11 @@ namespace OpenSim.Region.PhysicsModule.ubOde | |||
3287 | { | 3288 | { |
3288 | repData.size = _size; | 3289 | repData.size = _size; |
3289 | repData.pbs = _pbs; | 3290 | repData.pbs = _pbs; |
3290 | repData.shapetype = m_shapetype; | 3291 | repData.shapetype = m_fakeShapetype; |
3291 | _parent_scene.m_meshWorker.RequestMesh(repData); | 3292 | _parent_scene.m_meshWorker.RequestMesh(repData); |
3292 | } | 3293 | } |
3294 | else | ||
3295 | m_shapetype = repData.shapetype; | ||
3293 | } | 3296 | } |
3294 | 3297 | ||
3295 | private void changeFloatOnWater(bool newval) | 3298 | private void changeFloatOnWater(bool newval) |
diff --git a/bin/OpenSim32.exe b/bin/OpenSim32.exe new file mode 100644 index 0000000..74477c0 --- /dev/null +++ b/bin/OpenSim32.exe | |||
Binary files differ | |||
diff --git a/bin/OpenSim32.exe.config b/bin/OpenSim32.exe.config new file mode 100644 index 0000000..9224240 --- /dev/null +++ b/bin/OpenSim32.exe.config | |||
@@ -0,0 +1,75 @@ | |||
1 | <configuration> | ||
2 | <configSections> | ||
3 | <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net" /> | ||
4 | </configSections> | ||
5 | <startup> | ||
6 | <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/> | ||
7 | </startup> | ||
8 | <runtime> | ||
9 | <loadFromRemoteSources enabled="true" /> | ||
10 | </runtime> | ||
11 | <appSettings> | ||
12 | </appSettings> | ||
13 | <log4net> | ||
14 | <appender name="Console" type="OpenSim.Framework.Console.OpenSimAppender, OpenSim.Framework.Console"> | ||
15 | <filter type="log4net.Filter.LoggerMatchFilter"> | ||
16 | <loggerToMatch value="special"/> | ||
17 | <acceptOnMatch value="false"/> | ||
18 | </filter> | ||
19 | <layout type="log4net.Layout.PatternLayout"> | ||
20 | <conversionPattern value="%date{HH:mm:ss} - %message" /> | ||
21 | <!-- console log with milliseconds. Useful for debugging --> | ||
22 | <!-- <conversionPattern value="%date{HH:mm:ss.fff} - %message" /> --> | ||
23 | </layout> | ||
24 | </appender> | ||
25 | |||
26 | <!-- If you want automatic log-rolling then use RollingFileAppender instead of FileAppender: | ||
27 | <appender name="LogFileAppender" type="log4net.Appender.RollingFileAppender"> | ||
28 | <file value="log/OpenSim.log" /> | ||
29 | <rollingStyle value="Date" /> | ||
30 | <datePattern value="'.'yyyy-MM-dd"/> | ||
31 | ... | ||
32 | --> | ||
33 | |||
34 | <appender name="LogFileAppender" type="log4net.Appender.FileAppender"> | ||
35 | <file value="OpenSim.log" /> | ||
36 | <appendToFile value="true" /> | ||
37 | <filter type="log4net.Filter.LoggerMatchFilter"> | ||
38 | <loggerToMatch value="special"/> | ||
39 | <acceptOnMatch value="false"/> | ||
40 | </filter> | ||
41 | <layout type="log4net.Layout.PatternLayout"> | ||
42 | <conversionPattern value="%date %-5level - %logger %message%newline" /> | ||
43 | </layout> | ||
44 | </appender> | ||
45 | |||
46 | <appender name="StatsLogFileAppender" type="log4net.Appender.FileAppender"> | ||
47 | <file value="OpenSimStats.log"/> | ||
48 | <appendToFile value="true" /> | ||
49 | <layout type="log4net.Layout.PatternLayout"> | ||
50 | <conversionPattern value="%date - %message%newline" /> | ||
51 | </layout> | ||
52 | </appender> | ||
53 | |||
54 | <root> | ||
55 | <level value="DEBUG" /> | ||
56 | <appender-ref ref="Console" /> | ||
57 | <appender-ref ref="LogFileAppender" /> | ||
58 | </root> | ||
59 | |||
60 | <!-- Independently control logging level for XEngine --> | ||
61 | <logger name="OpenSim.Region.ScriptEngine.XEngine"> | ||
62 | <level value="INFO"/> | ||
63 | </logger> | ||
64 | |||
65 | <!-- Independently control logging level for per region module loading --> | ||
66 | <logger name="OpenSim.ApplicationPlugins.RegionModulesController.RegionModulesControllerPlugin"> | ||
67 | <level value="INFO"/> | ||
68 | </logger> | ||
69 | |||
70 | <!-- used for stats recording --> | ||
71 | <logger name="special.StatsLogger"> | ||
72 | <appender-ref ref="StatsLogFileAppender"/> | ||
73 | </logger> | ||
74 | </log4net> | ||
75 | </configuration> \ No newline at end of file | ||
diff --git a/bin/OpenSim.32BitLaunch.pdb b/bin/OpenSim32.pdb index 5083dd5..86d3058 100644 --- a/bin/OpenSim.32BitLaunch.pdb +++ b/bin/OpenSim32.pdb | |||
Binary files differ | |||
diff --git a/bin/OpenSimDefaults.ini b/bin/OpenSimDefaults.ini index 7bfb32a..f7e2f5f 100644 --- a/bin/OpenSimDefaults.ini +++ b/bin/OpenSimDefaults.ini | |||
@@ -663,14 +663,6 @@ | |||
663 | 663 | ||
664 | 664 | ||
665 | [ClientStack.LindenUDP] | 665 | [ClientStack.LindenUDP] |
666 | ; Set this to true to process incoming packets asynchronously. Networking is | ||
667 | ; already separated from packet handling with a queue, so this will only | ||
668 | ; affect whether networking internals such as packet decoding and | ||
669 | ; acknowledgement accounting are done synchronously or asynchronously | ||
670 | ; Default is true. | ||
671 | ; | ||
672 | ;async_packet_handling = true | ||
673 | |||
674 | ; The client socket receive buffer size determines how many | 666 | ; The client socket receive buffer size determines how many |
675 | ; incoming requests we can process; the default on .NET is 8192 | 667 | ; incoming requests we can process; the default on .NET is 8192 |
676 | ; which is about 2 4k-sized UDP datagrams. On mono this is | 668 | ; 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 0000000..e5e4674 --- /dev/null +++ b/bin/Robust32.exe | |||
Binary files differ | |||
diff --git a/bin/OpenSim.32BitLaunch.exe.config b/bin/Robust32.exe.config index 5b7807a..ca3ee0e 100644 --- a/bin/OpenSim.32BitLaunch.exe.config +++ b/bin/Robust32.exe.config | |||
@@ -1,75 +1,72 @@ | |||
1 | <?xml version="1.0" encoding="utf-8" ?> | 1 | <?xml version="1.0" encoding="utf-8"?> |
2 | <configuration> | 2 | <configuration> |
3 | <configSections> | 3 | <configSections> |
4 | <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net" /> | 4 | <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net" /> |
5 | </configSections> | 5 | </configSections> |
6 | <startup> | ||
7 | <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0" /> | ||
8 | </startup> | ||
6 | <runtime> | 9 | <runtime> |
7 | <loadFromRemoteSources enabled="true" /> | 10 | <loadFromRemoteSources enabled="true" /> |
8 | <gcConcurrent enabled="true" /> | ||
9 | <gcServer enabled="true" /> | ||
10 | </runtime> | 11 | </runtime> |
11 | <appSettings> | 12 | <appSettings> |
13 | <add key="ClientSettingsProvider.ServiceUri" value="" /> | ||
12 | </appSettings> | 14 | </appSettings> |
13 | <log4net> | 15 | <log4net> |
14 | <appender name="Console" type="OpenSim.Framework.Console.OpenSimAppender, OpenSim.Framework.Console"> | 16 | <appender name="Console" type="OpenSim.Framework.Console.OpenSimAppender, OpenSim.Framework.Console"> |
15 | <filter type="log4net.Filter.LoggerMatchFilter"> | 17 | <filter type="log4net.Filter.LoggerMatchFilter"> |
16 | <loggerToMatch value="special"/> | 18 | <loggerToMatch value="special" /> |
17 | <acceptOnMatch value="false"/> | 19 | <acceptOnMatch value="false" /> |
18 | </filter> | 20 | </filter> |
19 | <layout type="log4net.Layout.PatternLayout"> | 21 | <layout type="log4net.Layout.PatternLayout"> |
20 | <conversionPattern value="%date{HH:mm:ss} - %message" /> | 22 | <conversionPattern value="%date{HH:mm:ss} - %message" /> |
21 | <!-- console log with milliseconds. Useful for debugging --> | ||
22 | <!-- <conversionPattern value="%date{HH:mm:ss.fff} - %message" /> --> | ||
23 | </layout> | 23 | </layout> |
24 | </appender> | 24 | </appender> |
25 | 25 | <!-- If you want automatic log-rolling then use RollingFileAppender instead of FileAppender: | |
26 | <!-- If you want automatic log-rolling then use RollingFileAppender instead of FileAppender: | ||
27 | <appender name="LogFileAppender" type="log4net.Appender.RollingFileAppender"> | 26 | <appender name="LogFileAppender" type="log4net.Appender.RollingFileAppender"> |
28 | <file value="log/OpenSim.32BitLaunch.log" /> | 27 | <file value="log/Robust.log" /> |
29 | <rollingStyle value="Date" /> | 28 | <rollingStyle value="Date" /> |
30 | <datePattern value="'.'yyyy-MM-dd"/> | 29 | <datePattern value="'.'yyyy-MM-dd"/> |
31 | ... | 30 | ... |
32 | --> | 31 | --> |
33 | |||
34 | <appender name="LogFileAppender" type="log4net.Appender.FileAppender"> | 32 | <appender name="LogFileAppender" type="log4net.Appender.FileAppender"> |
35 | <file value="OpenSim.32BitLaunch.log" /> | 33 | <file value="Robust.log" /> |
36 | <appendToFile value="true" /> | 34 | <appendToFile value="true" /> |
37 | <filter type="log4net.Filter.LoggerMatchFilter"> | 35 | <filter type="log4net.Filter.LoggerMatchFilter"> |
38 | <loggerToMatch value="special"/> | 36 | <loggerToMatch value="special" /> |
39 | <acceptOnMatch value="false"/> | 37 | <acceptOnMatch value="false" /> |
40 | </filter> | 38 | </filter> |
41 | <layout type="log4net.Layout.PatternLayout"> | 39 | <layout type="log4net.Layout.PatternLayout"> |
42 | <conversionPattern value="%date %-5level - %logger %message%newline" /> | 40 | <conversionPattern value="%date %-5level - %logger %message%newline" /> |
43 | </layout> | 41 | </layout> |
44 | </appender> | 42 | </appender> |
45 | |||
46 | <appender name="StatsLogFileAppender" type="log4net.Appender.FileAppender"> | 43 | <appender name="StatsLogFileAppender" type="log4net.Appender.FileAppender"> |
47 | <file value="OpenSimStats.log"/> | 44 | <file value="RobustStats.log" /> |
48 | <appendToFile value="true" /> | 45 | <appendToFile value="true" /> |
49 | <layout type="log4net.Layout.PatternLayout"> | 46 | <layout type="log4net.Layout.PatternLayout"> |
50 | <conversionPattern value="%date - %message%newline" /> | 47 | <conversionPattern value="%date - %message%newline" /> |
51 | </layout> | 48 | </layout> |
52 | </appender> | 49 | </appender> |
53 | |||
54 | <root> | 50 | <root> |
55 | <level value="DEBUG" /> | 51 | <level value="DEBUG" /> |
56 | <appender-ref ref="Console" /> | 52 | <appender-ref ref="Console" /> |
57 | <appender-ref ref="LogFileAppender" /> | 53 | <appender-ref ref="LogFileAppender" /> |
58 | </root> | 54 | </root> |
59 | |||
60 | <!-- Independently control logging level for XEngine --> | ||
61 | <logger name="OpenSim.Region.ScriptEngine.XEngine"> | ||
62 | <level value="INFO"/> | ||
63 | </logger> | ||
64 | |||
65 | <!-- Independently control logging level for per region module loading --> | ||
66 | <logger name="OpenSim.ApplicationPlugins.RegionModulesController.RegionModulesControllerPlugin"> | ||
67 | <level value="INFO"/> | ||
68 | </logger> | ||
69 | |||
70 | <!-- used for stats recording --> | 55 | <!-- used for stats recording --> |
71 | <logger name="special.StatsLogger"> | 56 | <logger name="special.StatsLogger"> |
72 | <appender-ref ref="StatsLogFileAppender"/> | 57 | <appender-ref ref="StatsLogFileAppender" /> |
73 | </logger> | 58 | </logger> |
74 | </log4net> | 59 | </log4net> |
75 | </configuration> | 60 | <system.web> |
61 | <membership defaultProvider="ClientAuthenticationMembershipProvider"> | ||
62 | <providers> | ||
63 | <add name="ClientAuthenticationMembershipProvider" type="System.Web.ClientServices.Providers.ClientFormsAuthenticationMembershipProvider, System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" serviceUri="" /> | ||
64 | </providers> | ||
65 | </membership> | ||
66 | <roleManager defaultProvider="ClientRoleProvider" enabled="true"> | ||
67 | <providers> | ||
68 | <add name="ClientRoleProvider" type="System.Web.ClientServices.Providers.ClientRoleProvider, System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" serviceUri="" cacheTimeout="86400" /> | ||
69 | </providers> | ||
70 | </roleManager> | ||
71 | </system.web> | ||
72 | </configuration> \ No newline at end of file | ||
diff --git a/bin/Robust32.pdb b/bin/Robust32.pdb new file mode 100644 index 0000000..15a0d75 --- /dev/null +++ b/bin/Robust32.pdb | |||
Binary files differ | |||
diff --git a/bin/Robust32.vshost.exe b/bin/Robust32.vshost.exe new file mode 100644 index 0000000..681ab77 --- /dev/null +++ b/bin/Robust32.vshost.exe | |||
Binary files differ | |||
diff --git a/bin/Robust.32BitLaunch.exe.config b/bin/Robust32.vshost.exe.config index 0399a1b..ca3ee0e 100644 --- a/bin/Robust.32BitLaunch.exe.config +++ b/bin/Robust32.vshost.exe.config | |||
@@ -1,63 +1,72 @@ | |||
1 | <?xml version="1.0" encoding="utf-8" ?> | 1 | <?xml version="1.0" encoding="utf-8"?> |
2 | <configuration> | 2 | <configuration> |
3 | <configSections> | 3 | <configSections> |
4 | <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net" /> | 4 | <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net" /> |
5 | </configSections> | 5 | </configSections> |
6 | <startup> | ||
7 | <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0" /> | ||
8 | </startup> | ||
6 | <runtime> | 9 | <runtime> |
7 | <loadFromRemoteSources enabled="true" /> | 10 | <loadFromRemoteSources enabled="true" /> |
8 | <gcConcurrent enabled="true" /> | ||
9 | <gcServer enabled="true" /> | ||
10 | </runtime> | 11 | </runtime> |
11 | <appSettings> | 12 | <appSettings> |
13 | <add key="ClientSettingsProvider.ServiceUri" value="" /> | ||
12 | </appSettings> | 14 | </appSettings> |
13 | <log4net> | 15 | <log4net> |
14 | <appender name="Console" type="OpenSim.Framework.Console.OpenSimAppender, OpenSim.Framework.Console"> | 16 | <appender name="Console" type="OpenSim.Framework.Console.OpenSimAppender, OpenSim.Framework.Console"> |
15 | <filter type="log4net.Filter.LoggerMatchFilter"> | 17 | <filter type="log4net.Filter.LoggerMatchFilter"> |
16 | <loggerToMatch value="special"/> | 18 | <loggerToMatch value="special" /> |
17 | <acceptOnMatch value="false"/> | 19 | <acceptOnMatch value="false" /> |
18 | </filter> | 20 | </filter> |
19 | <layout type="log4net.Layout.PatternLayout"> | 21 | <layout type="log4net.Layout.PatternLayout"> |
20 | <conversionPattern value="%date{HH:mm:ss} - %message" /> | 22 | <conversionPattern value="%date{HH:mm:ss} - %message" /> |
21 | </layout> | 23 | </layout> |
22 | </appender> | 24 | </appender> |
23 | 25 | <!-- If you want automatic log-rolling then use RollingFileAppender instead of FileAppender: | |
24 | <!-- If you want automatic log-rolling then use RollingFileAppender instead of FileAppender: | ||
25 | <appender name="LogFileAppender" type="log4net.Appender.RollingFileAppender"> | 26 | <appender name="LogFileAppender" type="log4net.Appender.RollingFileAppender"> |
26 | <file value="log/Robust.32BitLaunch.log" /> | 27 | <file value="log/Robust.log" /> |
27 | <rollingStyle value="Date" /> | 28 | <rollingStyle value="Date" /> |
28 | <datePattern value="'.'yyyy-MM-dd"/> | 29 | <datePattern value="'.'yyyy-MM-dd"/> |
29 | ... | 30 | ... |
30 | --> | 31 | --> |
31 | |||
32 | <appender name="LogFileAppender" type="log4net.Appender.FileAppender"> | 32 | <appender name="LogFileAppender" type="log4net.Appender.FileAppender"> |
33 | <file value="Robust.32BitLaunch.log" /> | 33 | <file value="Robust.log" /> |
34 | <appendToFile value="true" /> | 34 | <appendToFile value="true" /> |
35 | <filter type="log4net.Filter.LoggerMatchFilter"> | 35 | <filter type="log4net.Filter.LoggerMatchFilter"> |
36 | <loggerToMatch value="special"/> | 36 | <loggerToMatch value="special" /> |
37 | <acceptOnMatch value="false"/> | 37 | <acceptOnMatch value="false" /> |
38 | </filter> | 38 | </filter> |
39 | <layout type="log4net.Layout.PatternLayout"> | 39 | <layout type="log4net.Layout.PatternLayout"> |
40 | <conversionPattern value="%date %-5level - %logger %message%newline" /> | 40 | <conversionPattern value="%date %-5level - %logger %message%newline" /> |
41 | </layout> | 41 | </layout> |
42 | </appender> | 42 | </appender> |
43 | |||
44 | <appender name="StatsLogFileAppender" type="log4net.Appender.FileAppender"> | 43 | <appender name="StatsLogFileAppender" type="log4net.Appender.FileAppender"> |
45 | <file value="RobustStats.log"/> | 44 | <file value="RobustStats.log" /> |
46 | <appendToFile value="true" /> | 45 | <appendToFile value="true" /> |
47 | <layout type="log4net.Layout.PatternLayout"> | 46 | <layout type="log4net.Layout.PatternLayout"> |
48 | <conversionPattern value="%date - %message%newline" /> | 47 | <conversionPattern value="%date - %message%newline" /> |
49 | </layout> | 48 | </layout> |
50 | </appender> | 49 | </appender> |
51 | |||
52 | <root> | 50 | <root> |
53 | <level value="DEBUG" /> | 51 | <level value="DEBUG" /> |
54 | <appender-ref ref="Console" /> | 52 | <appender-ref ref="Console" /> |
55 | <appender-ref ref="LogFileAppender" /> | 53 | <appender-ref ref="LogFileAppender" /> |
56 | </root> | 54 | </root> |
57 | |||
58 | <!-- used for stats recording --> | 55 | <!-- used for stats recording --> |
59 | <logger name="special.StatsLogger"> | 56 | <logger name="special.StatsLogger"> |
60 | <appender-ref ref="StatsLogFileAppender"/> | 57 | <appender-ref ref="StatsLogFileAppender" /> |
61 | </logger> | 58 | </logger> |
62 | </log4net> | 59 | </log4net> |
63 | </configuration> | 60 | <system.web> |
61 | <membership defaultProvider="ClientAuthenticationMembershipProvider"> | ||
62 | <providers> | ||
63 | <add name="ClientAuthenticationMembershipProvider" type="System.Web.ClientServices.Providers.ClientFormsAuthenticationMembershipProvider, System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" serviceUri="" /> | ||
64 | </providers> | ||
65 | </membership> | ||
66 | <roleManager defaultProvider="ClientRoleProvider" enabled="true"> | ||
67 | <providers> | ||
68 | <add name="ClientRoleProvider" type="System.Web.ClientServices.Providers.ClientRoleProvider, System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" serviceUri="" cacheTimeout="86400" /> | ||
69 | </providers> | ||
70 | </roleManager> | ||
71 | </system.web> | ||
72 | </configuration> \ No newline at end of file | ||
diff --git a/bin/opensim-ode.sh b/bin/opensim-ode.sh deleted file mode 100755 index 7c61571..0000000 --- a/bin/opensim-ode.sh +++ /dev/null | |||
@@ -1,4 +0,0 @@ | |||
1 | #!/bin/sh | ||
2 | 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" | ||
3 | ulimit -s 262144 | ||
4 | mono OpenSim.exe | ||
diff --git a/bin/opensim.sh b/bin/opensim.sh new file mode 100755 index 0000000..508d925 --- /dev/null +++ b/bin/opensim.sh | |||
@@ -0,0 +1,5 @@ | |||
1 | #!/bin/sh | ||
2 | ulimit -s 1048576 | ||
3 | # next option may improve SGen gc (for opensim only) you may also need to increase nursery size on large regions | ||
4 | #export MONO_GC_PARAMS="minor=split,promotion-age=14" | ||
5 | mono --desktop OpenSim.exe | ||
diff --git a/share/32BitLaunch/OpenSim.32BitLaunch.exe b/share/32BitLaunch/OpenSim.32BitLaunch.exe deleted file mode 100755 index 62c14af..0000000 --- a/share/32BitLaunch/OpenSim.32BitLaunch.exe +++ /dev/null | |||
Binary files differ | |||
diff --git a/share/32BitLaunch/OpenSim.32BitLaunch/OpenSim32.csproj b/share/32BitLaunch/OpenSim.32BitLaunch/OpenSim32.csproj new file mode 100644 index 0000000..c9a03e1 --- /dev/null +++ b/share/32BitLaunch/OpenSim.32BitLaunch/OpenSim32.csproj | |||
@@ -0,0 +1,94 @@ | |||
1 | <?xml version="1.0" encoding="utf-8"?> | ||
2 | <Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> | ||
3 | <PropertyGroup> | ||
4 | <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration> | ||
5 | <Platform Condition=" '$(Platform)' == '' ">x86</Platform> | ||
6 | <ProjectGuid>{968B4C73-280D-4FF5-9F73-DD3D10160C2E}</ProjectGuid> | ||
7 | <OutputType>Exe</OutputType> | ||
8 | <NoStandardLibraries>false</NoStandardLibraries> | ||
9 | <AssemblyName>OpenSim32</AssemblyName> | ||
10 | <TargetFrameworkVersion>v4.0</TargetFrameworkVersion> | ||
11 | <TargetFrameworkProfile> | ||
12 | </TargetFrameworkProfile> | ||
13 | <FileAlignment>512</FileAlignment> | ||
14 | <IsWebBootstrapper>false</IsWebBootstrapper> | ||
15 | <PublishUrl>publish\</PublishUrl> | ||
16 | <Install>true</Install> | ||
17 | <InstallFrom>Disk</InstallFrom> | ||
18 | <UpdateEnabled>false</UpdateEnabled> | ||
19 | <UpdateMode>Foreground</UpdateMode> | ||
20 | <UpdateInterval>7</UpdateInterval> | ||
21 | <UpdateIntervalUnits>Days</UpdateIntervalUnits> | ||
22 | <UpdatePeriodically>false</UpdatePeriodically> | ||
23 | <UpdateRequired>false</UpdateRequired> | ||
24 | <MapFileExtensions>true</MapFileExtensions> | ||
25 | <ApplicationRevision>0</ApplicationRevision> | ||
26 | <ApplicationVersion>1.0.0.%2a</ApplicationVersion> | ||
27 | <UseApplicationTrust>false</UseApplicationTrust> | ||
28 | <BootstrapperEnabled>true</BootstrapperEnabled> | ||
29 | </PropertyGroup> | ||
30 | <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x86' "> | ||
31 | <DebugSymbols>true</DebugSymbols> | ||
32 | <DebugType>full</DebugType> | ||
33 | <Optimize>false</Optimize> | ||
34 | <OutputPath>bin\Debug\</OutputPath> | ||
35 | <DefineConstants>DEBUG;TRACE</DefineConstants> | ||
36 | <ErrorReport>prompt</ErrorReport> | ||
37 | <WarningLevel>4</WarningLevel> | ||
38 | <PlatformTarget>x86</PlatformTarget> | ||
39 | </PropertyGroup> | ||
40 | <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x86' "> | ||
41 | <DebugType>pdbonly</DebugType> | ||
42 | <Optimize>true</Optimize> | ||
43 | <OutputPath>..\..\..\bin\</OutputPath> | ||
44 | <DefineConstants>TRACE</DefineConstants> | ||
45 | <ErrorReport>prompt</ErrorReport> | ||
46 | <WarningLevel>4</WarningLevel> | ||
47 | <PlatformTarget>x86</PlatformTarget> | ||
48 | <AllowUnsafeBlocks>true</AllowUnsafeBlocks> | ||
49 | <UseVSHostingProcess>false</UseVSHostingProcess> | ||
50 | </PropertyGroup> | ||
51 | <PropertyGroup> | ||
52 | <RootNamespace>OpenSim32</RootNamespace> | ||
53 | </PropertyGroup> | ||
54 | <ItemGroup> | ||
55 | <Reference Include="log4net"> | ||
56 | <HintPath>..\..\..\bin\log4net.dll</HintPath> | ||
57 | </Reference> | ||
58 | <Reference Include="Microsoft.CSharp" /> | ||
59 | <Reference Include="OpenSim"> | ||
60 | <HintPath>..\..\..\bin\OpenSim.exe</HintPath> | ||
61 | </Reference> | ||
62 | <Reference Include="System" /> | ||
63 | <Reference Include="System.Core" /> | ||
64 | <Reference Include="System.Data" /> | ||
65 | </ItemGroup> | ||
66 | <ItemGroup> | ||
67 | <Compile Include="Program.cs" /> | ||
68 | <Compile Include="Properties\AssemblyInfo.cs" /> | ||
69 | </ItemGroup> | ||
70 | <ItemGroup> | ||
71 | <None Include="app.config" /> | ||
72 | </ItemGroup> | ||
73 | <ItemGroup> | ||
74 | <BootstrapperPackage Include=".NETFramework,Version=v4.0"> | ||
75 | <Visible>False</Visible> | ||
76 | <ProductName>Microsoft .NET Framework 4 %28x86 and x64%29</ProductName> | ||
77 | <Install>true</Install> | ||
78 | </BootstrapperPackage> | ||
79 | <BootstrapperPackage Include="Microsoft.Net.Framework.3.5.SP1"> | ||
80 | <Visible>False</Visible> | ||
81 | <ProductName>.NET Framework 3.5 SP1</ProductName> | ||
82 | <Install>false</Install> | ||
83 | </BootstrapperPackage> | ||
84 | <BootstrapperPackage Include="Microsoft.Windows.Installer.4.5"> | ||
85 | <Visible>False</Visible> | ||
86 | <ProductName>Windows Installer 4.5</ProductName> | ||
87 | <Install>true</Install> | ||
88 | </BootstrapperPackage> | ||
89 | </ItemGroup> | ||
90 | <Import Project="$(MSBuildToolsPath)\Microsoft.CSHARP.Targets" /> | ||
91 | <ProjectExtensions> | ||
92 | <VisualStudio AllowExistingFolder="true" /> | ||
93 | </ProjectExtensions> | ||
94 | </Project> \ 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 0000000..2f100f7 --- /dev/null +++ b/share/32BitLaunch/OpenSim.32BitLaunch/OpenSim32.csproj.user | |||
@@ -0,0 +1,16 @@ | |||
1 | <?xml version="1.0" encoding="utf-8"?> | ||
2 | <Project ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> | ||
3 | <PropertyGroup> | ||
4 | <PublishUrlHistory>publish\</PublishUrlHistory> | ||
5 | <InstallUrlHistory /> | ||
6 | <SupportUrlHistory /> | ||
7 | <UpdateUrlHistory /> | ||
8 | <BootstrapperUrlHistory /> | ||
9 | <ErrorReportUrlHistory /> | ||
10 | <FallbackCulture>en-US</FallbackCulture> | ||
11 | <VerifyUploadedFiles>false</VerifyUploadedFiles> | ||
12 | </PropertyGroup> | ||
13 | <PropertyGroup> | ||
14 | <ReferencePath>C:\Avination\testsim\bin\</ReferencePath> | ||
15 | </PropertyGroup> | ||
16 | </Project> \ 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 0000000..93522ea --- /dev/null +++ b/share/32BitLaunch/OpenSim.32BitLaunch/OpenSim32.sln | |||
@@ -0,0 +1,22 @@ | |||
1 | | ||
2 | Microsoft Visual Studio Solution File, Format Version 12.00 | ||
3 | # Visual Studio 14 | ||
4 | VisualStudioVersion = 14.0.25420.1 | ||
5 | MinimumVisualStudioVersion = 10.0.40219.1 | ||
6 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "OpenSim32", "OpenSim32.csproj", "{968B4C73-280D-4FF5-9F73-DD3D10160C2E}" | ||
7 | EndProject | ||
8 | Global | ||
9 | GlobalSection(SolutionConfigurationPlatforms) = preSolution | ||
10 | Debug|x86 = Debug|x86 | ||
11 | Release|x86 = Release|x86 | ||
12 | EndGlobalSection | ||
13 | GlobalSection(ProjectConfigurationPlatforms) = postSolution | ||
14 | {968B4C73-280D-4FF5-9F73-DD3D10160C2E}.Debug|x86.ActiveCfg = Release|x86 | ||
15 | {968B4C73-280D-4FF5-9F73-DD3D10160C2E}.Debug|x86.Build.0 = Release|x86 | ||
16 | {968B4C73-280D-4FF5-9F73-DD3D10160C2E}.Release|x86.ActiveCfg = Release|x86 | ||
17 | {968B4C73-280D-4FF5-9F73-DD3D10160C2E}.Release|x86.Build.0 = Release|x86 | ||
18 | EndGlobalSection | ||
19 | GlobalSection(SolutionProperties) = preSolution | ||
20 | HideSolutionNode = FALSE | ||
21 | EndGlobalSection | ||
22 | EndGlobal | ||
diff --git a/share/32BitLaunch/OpenSim.32BitLaunch/Program.cs b/share/32BitLaunch/OpenSim.32BitLaunch/Program.cs index 52806b8..ca6c359 100644 --- a/share/32BitLaunch/OpenSim.32BitLaunch/Program.cs +++ b/share/32BitLaunch/OpenSim.32BitLaunch/Program.cs | |||
@@ -27,33 +27,13 @@ | |||
27 | 27 | ||
28 | using System; | 28 | using System; |
29 | 29 | ||
30 | namespace OpenSim._32BitLaunch | 30 | namespace OpenSim32 |
31 | { | 31 | { |
32 | class Program | 32 | class Program |
33 | { | 33 | { |
34 | static void Main(string[] args) | 34 | static void Main(string[] args) |
35 | { | 35 | { |
36 | log4net.Config.XmlConfigurator.Configure(); | 36 | global::OpenSim.Application.Main(args); |
37 | |||
38 | System.Console.WriteLine("32-bit OpenSim executor"); | ||
39 | System.Console.WriteLine("-----------------------"); | ||
40 | System.Console.WriteLine(""); | ||
41 | System.Console.WriteLine("This application is compiled for 32-bit CPU and will run under WOW32 or similar."); | ||
42 | System.Console.WriteLine("All 64-bit incompatibilities should be gone."); | ||
43 | System.Console.WriteLine(""); | ||
44 | System.Threading.Thread.Sleep(300); | ||
45 | try | ||
46 | { | ||
47 | global::OpenSim.Application.Main(args); | ||
48 | } | ||
49 | catch (Exception ex) | ||
50 | { | ||
51 | System.Console.WriteLine("OpenSim threw an exception:"); | ||
52 | System.Console.WriteLine(ex.ToString()); | ||
53 | System.Console.WriteLine(""); | ||
54 | System.Console.WriteLine("Application will now terminate!"); | ||
55 | System.Console.WriteLine(""); | ||
56 | } | ||
57 | } | 37 | } |
58 | } | 38 | } |
59 | } | 39 | } |
diff --git a/share/32BitLaunch/OpenSim.32BitLaunch/Properties/AssemblyInfo.cs b/share/32BitLaunch/OpenSim.32BitLaunch/Properties/AssemblyInfo.cs index e81870f..bda1a79 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; | |||
32 | // General information about an assembly is controlled through the following | 32 | // General information about an assembly is controlled through the following |
33 | // set of attributes. Change these attribute values to modify the information | 33 | // set of attributes. Change these attribute values to modify the information |
34 | // associated with an assembly. | 34 | // associated with an assembly. |
35 | [assembly: AssemblyTitle("OpenSim.32BitLaunch")] | 35 | [assembly: AssemblyTitle("OpenSim32")] |
36 | [assembly: AssemblyDescription("")] | 36 | [assembly: AssemblyDescription("OpenSim 32Bit Launcher")] |
37 | [assembly: AssemblyConfiguration("")] | 37 | [assembly: AssemblyConfiguration("")] |
38 | [assembly: AssemblyCompany("http://opensimulator.org")] | 38 | [assembly: AssemblyCompany("http://opensimulator.org")] |
39 | [assembly: AssemblyProduct("OpenSim.32BitLaunch")] | 39 | [assembly: AssemblyProduct("OpenSim 32BitLauncher")] |
40 | [assembly: AssemblyCopyright("Copyright (c) 2008")] | 40 | [assembly: AssemblyCopyright("Copyright (c) 2008")] |
41 | [assembly: AssemblyTrademark("")] | 41 | [assembly: AssemblyTrademark("")] |
42 | [assembly: AssemblyCulture("")] | 42 | [assembly: AssemblyCulture("")] |
@@ -59,5 +59,5 @@ using System.Runtime.InteropServices; | |||
59 | // You can specify all the values or you can default the Build and Revision Numbers | 59 | // You can specify all the values or you can default the Build and Revision Numbers |
60 | // by using the '*' as shown below: | 60 | // by using the '*' as shown below: |
61 | // [assembly: AssemblyVersion("0.6.3.*")] | 61 | // [assembly: AssemblyVersion("0.6.3.*")] |
62 | [assembly: AssemblyVersion("0.6.3.*")] | 62 | [assembly: AssemblyVersion("0.9.1.*")] |
63 | [assembly: AssemblyFileVersion("1.0.0.0")] | 63 | [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 0000000..9224240 --- /dev/null +++ b/share/32BitLaunch/OpenSim.32BitLaunch/app.config | |||
@@ -0,0 +1,75 @@ | |||
1 | <configuration> | ||
2 | <configSections> | ||
3 | <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net" /> | ||
4 | </configSections> | ||
5 | <startup> | ||
6 | <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/> | ||
7 | </startup> | ||
8 | <runtime> | ||
9 | <loadFromRemoteSources enabled="true" /> | ||
10 | </runtime> | ||
11 | <appSettings> | ||
12 | </appSettings> | ||
13 | <log4net> | ||
14 | <appender name="Console" type="OpenSim.Framework.Console.OpenSimAppender, OpenSim.Framework.Console"> | ||
15 | <filter type="log4net.Filter.LoggerMatchFilter"> | ||
16 | <loggerToMatch value="special"/> | ||
17 | <acceptOnMatch value="false"/> | ||
18 | </filter> | ||
19 | <layout type="log4net.Layout.PatternLayout"> | ||
20 | <conversionPattern value="%date{HH:mm:ss} - %message" /> | ||
21 | <!-- console log with milliseconds. Useful for debugging --> | ||
22 | <!-- <conversionPattern value="%date{HH:mm:ss.fff} - %message" /> --> | ||
23 | </layout> | ||
24 | </appender> | ||
25 | |||
26 | <!-- If you want automatic log-rolling then use RollingFileAppender instead of FileAppender: | ||
27 | <appender name="LogFileAppender" type="log4net.Appender.RollingFileAppender"> | ||
28 | <file value="log/OpenSim.log" /> | ||
29 | <rollingStyle value="Date" /> | ||
30 | <datePattern value="'.'yyyy-MM-dd"/> | ||
31 | ... | ||
32 | --> | ||
33 | |||
34 | <appender name="LogFileAppender" type="log4net.Appender.FileAppender"> | ||
35 | <file value="OpenSim.log" /> | ||
36 | <appendToFile value="true" /> | ||
37 | <filter type="log4net.Filter.LoggerMatchFilter"> | ||
38 | <loggerToMatch value="special"/> | ||
39 | <acceptOnMatch value="false"/> | ||
40 | </filter> | ||
41 | <layout type="log4net.Layout.PatternLayout"> | ||
42 | <conversionPattern value="%date %-5level - %logger %message%newline" /> | ||
43 | </layout> | ||
44 | </appender> | ||
45 | |||
46 | <appender name="StatsLogFileAppender" type="log4net.Appender.FileAppender"> | ||
47 | <file value="OpenSimStats.log"/> | ||
48 | <appendToFile value="true" /> | ||
49 | <layout type="log4net.Layout.PatternLayout"> | ||
50 | <conversionPattern value="%date - %message%newline" /> | ||
51 | </layout> | ||
52 | </appender> | ||
53 | |||
54 | <root> | ||
55 | <level value="DEBUG" /> | ||
56 | <appender-ref ref="Console" /> | ||
57 | <appender-ref ref="LogFileAppender" /> | ||
58 | </root> | ||
59 | |||
60 | <!-- Independently control logging level for XEngine --> | ||
61 | <logger name="OpenSim.Region.ScriptEngine.XEngine"> | ||
62 | <level value="INFO"/> | ||
63 | </logger> | ||
64 | |||
65 | <!-- Independently control logging level for per region module loading --> | ||
66 | <logger name="OpenSim.ApplicationPlugins.RegionModulesController.RegionModulesControllerPlugin"> | ||
67 | <level value="INFO"/> | ||
68 | </logger> | ||
69 | |||
70 | <!-- used for stats recording --> | ||
71 | <logger name="special.StatsLogger"> | ||
72 | <appender-ref ref="StatsLogFileAppender"/> | ||
73 | </logger> | ||
74 | </log4net> | ||
75 | </configuration> \ No newline at end of file | ||
diff --git a/share/32BitLaunch/README b/share/32BitLaunch/README deleted file mode 100644 index 443cde0..0000000 --- a/share/32BitLaunch/README +++ /dev/null | |||
@@ -1,5 +0,0 @@ | |||
1 | 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. | ||
2 | |||
3 | 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. | ||
4 | |||
5 | 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 affedb4..0000000 --- a/share/32BitLaunch/Robust.32BitLaunch.exe +++ /dev/null | |||
Binary files differ | |||
diff --git a/share/32BitLaunch/Robust.32BitLaunch/Program.cs b/share/32BitLaunch/Robust.32BitLaunch/Program.cs index 490414c..ec5943e 100644 --- a/share/32BitLaunch/Robust.32BitLaunch/Program.cs +++ b/share/32BitLaunch/Robust.32BitLaunch/Program.cs | |||
@@ -26,35 +26,14 @@ | |||
26 | */ | 26 | */ |
27 | 27 | ||
28 | using System; | 28 | using System; |
29 | using log4net; | ||
30 | 29 | ||
31 | namespace Robust._32BitLaunch | 30 | namespace Robust32 |
32 | { | 31 | { |
33 | class Program | 32 | class Program |
34 | { | 33 | { |
35 | static void Main(string[] args) | 34 | static void Main(string[] args) |
36 | { | 35 | { |
37 | log4net.Config.XmlConfigurator.Configure(); | ||
38 | |||
39 | System.Console.WriteLine("32-bit OpenSim executor"); | ||
40 | System.Console.WriteLine("-----------------------"); | ||
41 | System.Console.WriteLine(""); | ||
42 | System.Console.WriteLine("This application is compiled for 32-bit CPU and will run under WOW32 or similar."); | ||
43 | System.Console.WriteLine("All 64-bit incompatibilities should be gone."); | ||
44 | System.Console.WriteLine(""); | ||
45 | System.Threading.Thread.Sleep(300); | ||
46 | try | ||
47 | { | ||
48 | global::OpenSim.Server.OpenSimServer.Main(args); | 36 | global::OpenSim.Server.OpenSimServer.Main(args); |
49 | } | ||
50 | catch (Exception ex) | ||
51 | { | ||
52 | System.Console.WriteLine("OpenSim threw an exception:"); | ||
53 | System.Console.WriteLine(ex.ToString()); | ||
54 | System.Console.WriteLine(""); | ||
55 | System.Console.WriteLine("Application will now terminate!"); | ||
56 | System.Console.WriteLine(""); | ||
57 | } | ||
58 | } | 37 | } |
59 | } | 38 | } |
60 | } | 39 | } |
diff --git a/share/32BitLaunch/Robust.32BitLaunch/Robust32.csproj b/share/32BitLaunch/Robust.32BitLaunch/Robust32.csproj new file mode 100644 index 0000000..a6dae90 --- /dev/null +++ b/share/32BitLaunch/Robust.32BitLaunch/Robust32.csproj | |||
@@ -0,0 +1,92 @@ | |||
1 | <?xml version="1.0" encoding="utf-8"?> | ||
2 | <Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> | ||
3 | <PropertyGroup> | ||
4 | <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration> | ||
5 | <Platform Condition=" '$(Platform)' == '' ">x86</Platform> | ||
6 | <ProjectGuid>{A159489E-6552-4734-8EFA-8E031F63C7F6}</ProjectGuid> | ||
7 | <OutputType>Exe</OutputType> | ||
8 | <NoStandardLibraries>false</NoStandardLibraries> | ||
9 | <AssemblyName>Robust32</AssemblyName> | ||
10 | <TargetFrameworkVersion>v4.0</TargetFrameworkVersion> | ||
11 | <TargetFrameworkProfile> | ||
12 | </TargetFrameworkProfile> | ||
13 | <FileAlignment>512</FileAlignment> | ||
14 | <PublishUrl>publish\</PublishUrl> | ||
15 | <Install>true</Install> | ||
16 | <InstallFrom>Disk</InstallFrom> | ||
17 | <UpdateEnabled>false</UpdateEnabled> | ||
18 | <UpdateMode>Foreground</UpdateMode> | ||
19 | <UpdateInterval>7</UpdateInterval> | ||
20 | <UpdateIntervalUnits>Days</UpdateIntervalUnits> | ||
21 | <UpdatePeriodically>false</UpdatePeriodically> | ||
22 | <UpdateRequired>false</UpdateRequired> | ||
23 | <MapFileExtensions>true</MapFileExtensions> | ||
24 | <ApplicationRevision>0</ApplicationRevision> | ||
25 | <ApplicationVersion>1.0.0.%2a</ApplicationVersion> | ||
26 | <IsWebBootstrapper>false</IsWebBootstrapper> | ||
27 | <UseApplicationTrust>false</UseApplicationTrust> | ||
28 | <BootstrapperEnabled>true</BootstrapperEnabled> | ||
29 | </PropertyGroup> | ||
30 | <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x86' "> | ||
31 | <DebugSymbols>true</DebugSymbols> | ||
32 | <DebugType>full</DebugType> | ||
33 | <Optimize>false</Optimize> | ||
34 | <OutputPath>..\..\..\bin\</OutputPath> | ||
35 | <DefineConstants>DEBUG;TRACE</DefineConstants> | ||
36 | <ErrorReport>prompt</ErrorReport> | ||
37 | <WarningLevel>4</WarningLevel> | ||
38 | <PlatformTarget>x86</PlatformTarget> | ||
39 | </PropertyGroup> | ||
40 | <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x86' "> | ||
41 | <DebugType>pdbonly</DebugType> | ||
42 | <Optimize>true</Optimize> | ||
43 | <OutputPath>..\..\..\bin\</OutputPath> | ||
44 | <DefineConstants>TRACE</DefineConstants> | ||
45 | <ErrorReport>prompt</ErrorReport> | ||
46 | <WarningLevel>4</WarningLevel> | ||
47 | <PlatformTarget>x86</PlatformTarget> | ||
48 | <AllowUnsafeBlocks>true</AllowUnsafeBlocks> | ||
49 | <GenerateSerializationAssemblies>Off</GenerateSerializationAssemblies> | ||
50 | </PropertyGroup> | ||
51 | <PropertyGroup> | ||
52 | <RootNamespace>Robust32</RootNamespace> | ||
53 | </PropertyGroup> | ||
54 | <PropertyGroup> | ||
55 | <StartupObject>Robust32.Program</StartupObject> | ||
56 | </PropertyGroup> | ||
57 | <ItemGroup> | ||
58 | <Reference Include="Microsoft.CSharp" /> | ||
59 | <Reference Include="Robust, Version=0.0.0.0, Culture=neutral, processorArchitecture=MSIL"> | ||
60 | <SpecificVersion>False</SpecificVersion> | ||
61 | <HintPath>..\..\..\bin\Robust.exe</HintPath> | ||
62 | </Reference> | ||
63 | </ItemGroup> | ||
64 | <ItemGroup> | ||
65 | <Compile Include="Program.cs" /> | ||
66 | <Compile Include="Properties\AssemblyInfo.cs" /> | ||
67 | </ItemGroup> | ||
68 | <ItemGroup> | ||
69 | <None Include="app.config" /> | ||
70 | </ItemGroup> | ||
71 | <ItemGroup> | ||
72 | <BootstrapperPackage Include=".NETFramework,Version=v4.0"> | ||
73 | <Visible>False</Visible> | ||
74 | <ProductName>Microsoft .NET Framework 4 %28x86 and x64%29</ProductName> | ||
75 | <Install>true</Install> | ||
76 | </BootstrapperPackage> | ||
77 | <BootstrapperPackage Include="Microsoft.Net.Framework.3.5.SP1"> | ||
78 | <Visible>False</Visible> | ||
79 | <ProductName>.NET Framework 3.5 SP1</ProductName> | ||
80 | <Install>false</Install> | ||
81 | </BootstrapperPackage> | ||
82 | <BootstrapperPackage Include="Microsoft.Windows.Installer.4.5"> | ||
83 | <Visible>False</Visible> | ||
84 | <ProductName>Windows Installer 4.5</ProductName> | ||
85 | <Install>true</Install> | ||
86 | </BootstrapperPackage> | ||
87 | </ItemGroup> | ||
88 | <Import Project="$(MSBuildToolsPath)\Microsoft.CSHARP.Targets" /> | ||
89 | <ProjectExtensions> | ||
90 | <VisualStudio AllowExistingFolder="true" /> | ||
91 | </ProjectExtensions> | ||
92 | </Project> \ 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 0000000..8221333 --- /dev/null +++ b/share/32BitLaunch/Robust.32BitLaunch/Robust32.csproj.user | |||
@@ -0,0 +1,13 @@ | |||
1 | <?xml version="1.0" encoding="utf-8"?> | ||
2 | <Project ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> | ||
3 | <PropertyGroup> | ||
4 | <PublishUrlHistory>publish\</PublishUrlHistory> | ||
5 | <InstallUrlHistory /> | ||
6 | <SupportUrlHistory /> | ||
7 | <UpdateUrlHistory /> | ||
8 | <BootstrapperUrlHistory /> | ||
9 | <ErrorReportUrlHistory /> | ||
10 | <FallbackCulture>en-US</FallbackCulture> | ||
11 | <VerifyUploadedFiles>false</VerifyUploadedFiles> | ||
12 | </PropertyGroup> | ||
13 | </Project> \ 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 0000000..368b3ca --- /dev/null +++ b/share/32BitLaunch/Robust.32BitLaunch/Robust32.sln | |||
@@ -0,0 +1,22 @@ | |||
1 | | ||
2 | Microsoft Visual Studio Solution File, Format Version 12.00 | ||
3 | # Visual Studio 14 | ||
4 | VisualStudioVersion = 14.0.25420.1 | ||
5 | MinimumVisualStudioVersion = 10.0.40219.1 | ||
6 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Robust32", "Robust32.csproj", "{A159489E-6552-4734-8EFA-8E031F63C7F6}" | ||
7 | EndProject | ||
8 | Global | ||
9 | GlobalSection(SolutionConfigurationPlatforms) = preSolution | ||
10 | Debug|x86 = Debug|x86 | ||
11 | Release|x86 = Release|x86 | ||
12 | EndGlobalSection | ||
13 | GlobalSection(ProjectConfigurationPlatforms) = postSolution | ||
14 | {A159489E-6552-4734-8EFA-8E031F63C7F6}.Debug|x86.ActiveCfg = Debug|x86 | ||
15 | {A159489E-6552-4734-8EFA-8E031F63C7F6}.Debug|x86.Build.0 = Debug|x86 | ||
16 | {A159489E-6552-4734-8EFA-8E031F63C7F6}.Release|x86.ActiveCfg = Release|x86 | ||
17 | {A159489E-6552-4734-8EFA-8E031F63C7F6}.Release|x86.Build.0 = Release|x86 | ||
18 | EndGlobalSection | ||
19 | GlobalSection(SolutionProperties) = preSolution | ||
20 | HideSolutionNode = FALSE | ||
21 | EndGlobalSection | ||
22 | EndGlobal | ||
diff --git a/share/32BitLaunch/Robust.32BitLaunch/app.config b/share/32BitLaunch/Robust.32BitLaunch/app.config new file mode 100644 index 0000000..ca3ee0e --- /dev/null +++ b/share/32BitLaunch/Robust.32BitLaunch/app.config | |||
@@ -0,0 +1,72 @@ | |||
1 | <?xml version="1.0" encoding="utf-8"?> | ||
2 | <configuration> | ||
3 | <configSections> | ||
4 | <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net" /> | ||
5 | </configSections> | ||
6 | <startup> | ||
7 | <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0" /> | ||
8 | </startup> | ||
9 | <runtime> | ||
10 | <loadFromRemoteSources enabled="true" /> | ||
11 | </runtime> | ||
12 | <appSettings> | ||
13 | <add key="ClientSettingsProvider.ServiceUri" value="" /> | ||
14 | </appSettings> | ||
15 | <log4net> | ||
16 | <appender name="Console" type="OpenSim.Framework.Console.OpenSimAppender, OpenSim.Framework.Console"> | ||
17 | <filter type="log4net.Filter.LoggerMatchFilter"> | ||
18 | <loggerToMatch value="special" /> | ||
19 | <acceptOnMatch value="false" /> | ||
20 | </filter> | ||
21 | <layout type="log4net.Layout.PatternLayout"> | ||
22 | <conversionPattern value="%date{HH:mm:ss} - %message" /> | ||
23 | </layout> | ||
24 | </appender> | ||
25 | <!-- If you want automatic log-rolling then use RollingFileAppender instead of FileAppender: | ||
26 | <appender name="LogFileAppender" type="log4net.Appender.RollingFileAppender"> | ||
27 | <file value="log/Robust.log" /> | ||
28 | <rollingStyle value="Date" /> | ||
29 | <datePattern value="'.'yyyy-MM-dd"/> | ||
30 | ... | ||
31 | --> | ||
32 | <appender name="LogFileAppender" type="log4net.Appender.FileAppender"> | ||
33 | <file value="Robust.log" /> | ||
34 | <appendToFile value="true" /> | ||
35 | <filter type="log4net.Filter.LoggerMatchFilter"> | ||
36 | <loggerToMatch value="special" /> | ||
37 | <acceptOnMatch value="false" /> | ||
38 | </filter> | ||
39 | <layout type="log4net.Layout.PatternLayout"> | ||
40 | <conversionPattern value="%date %-5level - %logger %message%newline" /> | ||
41 | </layout> | ||
42 | </appender> | ||
43 | <appender name="StatsLogFileAppender" type="log4net.Appender.FileAppender"> | ||
44 | <file value="RobustStats.log" /> | ||
45 | <appendToFile value="true" /> | ||
46 | <layout type="log4net.Layout.PatternLayout"> | ||
47 | <conversionPattern value="%date - %message%newline" /> | ||
48 | </layout> | ||
49 | </appender> | ||
50 | <root> | ||
51 | <level value="DEBUG" /> | ||
52 | <appender-ref ref="Console" /> | ||
53 | <appender-ref ref="LogFileAppender" /> | ||
54 | </root> | ||
55 | <!-- used for stats recording --> | ||
56 | <logger name="special.StatsLogger"> | ||
57 | <appender-ref ref="StatsLogFileAppender" /> | ||
58 | </logger> | ||
59 | </log4net> | ||
60 | <system.web> | ||
61 | <membership defaultProvider="ClientAuthenticationMembershipProvider"> | ||
62 | <providers> | ||
63 | <add name="ClientAuthenticationMembershipProvider" type="System.Web.ClientServices.Providers.ClientFormsAuthenticationMembershipProvider, System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" serviceUri="" /> | ||
64 | </providers> | ||
65 | </membership> | ||
66 | <roleManager defaultProvider="ClientRoleProvider" enabled="true"> | ||
67 | <providers> | ||
68 | <add name="ClientRoleProvider" type="System.Web.ClientServices.Providers.ClientRoleProvider, System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" serviceUri="" cacheTimeout="86400" /> | ||
69 | </providers> | ||
70 | </roleManager> | ||
71 | </system.web> | ||
72 | </configuration> \ No newline at end of file | ||