aboutsummaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--OpenSim/Framework/Servers/HttpServer/BaseHttpServer.cs4
-rw-r--r--OpenSim/Framework/Servers/HttpServer/PollServiceRequestManager.cs10
-rw-r--r--OpenSim/Region/ClientStack/Linden/Caps/EventQueue/EventQueueGetModule.cs11
-rw-r--r--OpenSim/Region/ClientStack/Linden/Caps/EventQueue/Tests/EventQueueTests.cs15
4 files changed, 31 insertions, 9 deletions
diff --git a/OpenSim/Framework/Servers/HttpServer/BaseHttpServer.cs b/OpenSim/Framework/Servers/HttpServer/BaseHttpServer.cs
index a6bdc2d..33dec8d 100644
--- a/OpenSim/Framework/Servers/HttpServer/BaseHttpServer.cs
+++ b/OpenSim/Framework/Servers/HttpServer/BaseHttpServer.cs
@@ -1838,9 +1838,9 @@ namespace OpenSim.Framework.Servers.HttpServer
1838 { 1838 {
1839 lock (m_pollHandlers) 1839 lock (m_pollHandlers)
1840 { 1840 {
1841 if (m_pollHandlers.ContainsKey(httpMethod)) 1841 if (m_pollHandlers.ContainsKey(path))
1842 { 1842 {
1843 m_pollHandlers.Remove(httpMethod); 1843 m_pollHandlers.Remove(path);
1844 } 1844 }
1845 } 1845 }
1846 1846
diff --git a/OpenSim/Framework/Servers/HttpServer/PollServiceRequestManager.cs b/OpenSim/Framework/Servers/HttpServer/PollServiceRequestManager.cs
index e7a64f7..0840a9d 100644
--- a/OpenSim/Framework/Servers/HttpServer/PollServiceRequestManager.cs
+++ b/OpenSim/Framework/Servers/HttpServer/PollServiceRequestManager.cs
@@ -28,12 +28,16 @@
28using System; 28using System;
29using System.Collections; 29using System.Collections;
30using System.Threading; 30using System.Threading;
31using System.Reflection;
32using log4net;
31using HttpServer; 33using HttpServer;
32 34
33namespace OpenSim.Framework.Servers.HttpServer 35namespace OpenSim.Framework.Servers.HttpServer
34{ 36{
35 public class PollServiceRequestManager 37 public class PollServiceRequestManager
36 { 38 {
39// private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
40
37 private readonly BaseHttpServer m_server; 41 private readonly BaseHttpServer m_server;
38 private static Queue m_requests = Queue.Synchronized(new Queue()); 42 private static Queue m_requests = Queue.Synchronized(new Queue());
39 private uint m_WorkerThreadCount = 0; 43 private uint m_WorkerThreadCount = 0;
@@ -42,8 +46,6 @@ namespace OpenSim.Framework.Servers.HttpServer
42 private Thread m_watcherThread; 46 private Thread m_watcherThread;
43 private bool m_running = true; 47 private bool m_running = true;
44 48
45
46
47 public PollServiceRequestManager(BaseHttpServer pSrv, uint pWorkerThreadCount, int pTimeout) 49 public PollServiceRequestManager(BaseHttpServer pSrv, uint pWorkerThreadCount, int pTimeout)
48 { 50 {
49 m_server = pSrv; 51 m_server = pSrv;
@@ -61,7 +63,6 @@ namespace OpenSim.Framework.Servers.HttpServer
61 m_workerThreads[i].Name = String.Format("PollServiceWorkerThread{0}",i); 63 m_workerThreads[i].Name = String.Format("PollServiceWorkerThread{0}",i);
62 //Can't add to thread Tracker here Referencing OpenSim.Framework creates circular reference 64 //Can't add to thread Tracker here Referencing OpenSim.Framework creates circular reference
63 m_workerThreads[i].Start(); 65 m_workerThreads[i].Start();
64
65 } 66 }
66 67
67 //start watcher threads 68 //start watcher threads
@@ -98,7 +99,10 @@ namespace OpenSim.Framework.Servers.HttpServer
98 if (m_requests.Count == 0) 99 if (m_requests.Count == 0)
99 return; 100 return;
100 101
102// m_log.DebugFormat("[POLL SERVICE REQUEST MANAGER]: Processing {0} requests", m_requests.Count);
103
101 int reqperthread = (int) (m_requests.Count/m_WorkerThreadCount) + 1; 104 int reqperthread = (int) (m_requests.Count/m_WorkerThreadCount) + 1;
105
102 // For Each WorkerThread 106 // For Each WorkerThread
103 for (int tc = 0; tc < m_WorkerThreadCount && m_requests.Count > 0; tc++) 107 for (int tc = 0; tc < m_WorkerThreadCount && m_requests.Count > 0; tc++)
104 { 108 {
diff --git a/OpenSim/Region/ClientStack/Linden/Caps/EventQueue/EventQueueGetModule.cs b/OpenSim/Region/ClientStack/Linden/Caps/EventQueue/EventQueueGetModule.cs
index 3eb2b5e..7d73b3e 100644
--- a/OpenSim/Region/ClientStack/Linden/Caps/EventQueue/EventQueueGetModule.cs
+++ b/OpenSim/Region/ClientStack/Linden/Caps/EventQueue/EventQueueGetModule.cs
@@ -204,7 +204,7 @@ namespace OpenSim.Region.ClientStack.Linden
204 204
205 private void ClientClosed(UUID AgentID, Scene scene) 205 private void ClientClosed(UUID AgentID, Scene scene)
206 { 206 {
207 //m_log.DebugFormat("[EVENTQUEUE]: Closed client {0} in region {1}", AgentID, m_scene.RegionInfo.RegionName); 207// m_log.DebugFormat("[EVENTQUEUE]: Closed client {0} in region {1}", AgentID, m_scene.RegionInfo.RegionName);
208 208
209 int count = 0; 209 int count = 0;
210 while (queues.ContainsKey(AgentID) && queues[AgentID].Count > 0 && count++ < 5) 210 while (queues.ContainsKey(AgentID) && queues[AgentID].Count > 0 && count++ < 5)
@@ -216,11 +216,13 @@ namespace OpenSim.Region.ClientStack.Linden
216 { 216 {
217 queues.Remove(AgentID); 217 queues.Remove(AgentID);
218 } 218 }
219
219 List<UUID> removeitems = new List<UUID>(); 220 List<UUID> removeitems = new List<UUID>();
220 lock (m_AvatarQueueUUIDMapping) 221 lock (m_AvatarQueueUUIDMapping)
221 { 222 {
222 foreach (UUID ky in m_AvatarQueueUUIDMapping.Keys) 223 foreach (UUID ky in m_AvatarQueueUUIDMapping.Keys)
223 { 224 {
225// m_log.DebugFormat("[EVENTQUEUE]: Found key {0} in m_AvatarQueueUUIDMapping while looking for {1}", ky, AgentID);
224 if (ky == AgentID) 226 if (ky == AgentID)
225 { 227 {
226 removeitems.Add(ky); 228 removeitems.Add(ky);
@@ -229,11 +231,13 @@ namespace OpenSim.Region.ClientStack.Linden
229 231
230 foreach (UUID ky in removeitems) 232 foreach (UUID ky in removeitems)
231 { 233 {
234 UUID eventQueueGetUuid = m_AvatarQueueUUIDMapping[ky];
232 m_AvatarQueueUUIDMapping.Remove(ky); 235 m_AvatarQueueUUIDMapping.Remove(ky);
233 MainServer.Instance.RemovePollServiceHTTPHandler("","/CAPS/EQG/" + ky.ToString() + "/");
234 }
235 236
237 MainServer.Instance.RemovePollServiceHTTPHandler("","/CAPS/EQG/" + eventQueueGetUuid.ToString() + "/");
238 }
236 } 239 }
240
237 UUID searchval = UUID.Zero; 241 UUID searchval = UUID.Zero;
238 242
239 removeitems.Clear(); 243 removeitems.Clear();
@@ -252,7 +256,6 @@ namespace OpenSim.Region.ClientStack.Linden
252 256
253 foreach (UUID ky in removeitems) 257 foreach (UUID ky in removeitems)
254 m_QueueUUIDAvatarMapping.Remove(ky); 258 m_QueueUUIDAvatarMapping.Remove(ky);
255
256 } 259 }
257 } 260 }
258 261
diff --git a/OpenSim/Region/ClientStack/Linden/Caps/EventQueue/Tests/EventQueueTests.cs b/OpenSim/Region/ClientStack/Linden/Caps/EventQueue/Tests/EventQueueTests.cs
index ec8a414..2ca02c5 100644
--- a/OpenSim/Region/ClientStack/Linden/Caps/EventQueue/Tests/EventQueueTests.cs
+++ b/OpenSim/Region/ClientStack/Linden/Caps/EventQueue/Tests/EventQueueTests.cs
@@ -74,5 +74,20 @@ namespace OpenSim.Region.ClientStack.Linden.Tests
74 // TODO: Add more assertions for the other aspects of event queues 74 // TODO: Add more assertions for the other aspects of event queues
75 Assert.That(MainServer.Instance.GetPollServiceHandlerKeys().Count, Is.EqualTo(1)); 75 Assert.That(MainServer.Instance.GetPollServiceHandlerKeys().Count, Is.EqualTo(1));
76 } 76 }
77
78 [Test]
79 public void RemoveForClient()
80 {
81 TestHelpers.InMethod();
82// log4net.Config.XmlConfigurator.Configure();
83
84 UUID spId = TestHelpers.ParseTail(0x1);
85
86 SceneHelpers.AddScenePresence(m_scene, spId);
87 m_scene.IncomingCloseAgent(spId);
88
89 // TODO: Add more assertions for the other aspects of event queues
90 Assert.That(MainServer.Instance.GetPollServiceHandlerKeys().Count, Is.EqualTo(0));
91 }
77 } 92 }
78} \ No newline at end of file 93} \ No newline at end of file