aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region/ClientStack/Linden
diff options
context:
space:
mode:
Diffstat (limited to 'OpenSim/Region/ClientStack/Linden')
-rw-r--r--OpenSim/Region/ClientStack/Linden/Caps/EventQueue/EventQueueGetModule.cs70
1 files changed, 16 insertions, 54 deletions
diff --git a/OpenSim/Region/ClientStack/Linden/Caps/EventQueue/EventQueueGetModule.cs b/OpenSim/Region/ClientStack/Linden/Caps/EventQueue/EventQueueGetModule.cs
index e98a470..4272375 100644
--- a/OpenSim/Region/ClientStack/Linden/Caps/EventQueue/EventQueueGetModule.cs
+++ b/OpenSim/Region/ClientStack/Linden/Caps/EventQueue/EventQueueGetModule.cs
@@ -91,7 +91,6 @@ namespace OpenSim.Region.ClientStack.Linden
91 scene.RegisterModuleInterface<IEventQueue>(this); 91 scene.RegisterModuleInterface<IEventQueue>(this);
92 92
93 scene.EventManager.OnClientClosed += ClientClosed; 93 scene.EventManager.OnClientClosed += ClientClosed;
94 scene.EventManager.OnMakeChildAgent += MakeChildAgent;
95 scene.EventManager.OnRegisterCaps += OnRegisterCaps; 94 scene.EventManager.OnRegisterCaps += OnRegisterCaps;
96 95
97 MainConsole.Instance.Commands.AddCommand( 96 MainConsole.Instance.Commands.AddCommand(
@@ -120,7 +119,6 @@ namespace OpenSim.Region.ClientStack.Linden
120 return; 119 return;
121 120
122 scene.EventManager.OnClientClosed -= ClientClosed; 121 scene.EventManager.OnClientClosed -= ClientClosed;
123 scene.EventManager.OnMakeChildAgent -= MakeChildAgent;
124 scene.EventManager.OnRegisterCaps -= OnRegisterCaps; 122 scene.EventManager.OnRegisterCaps -= OnRegisterCaps;
125 123
126 scene.UnregisterModuleInterface<IEventQueue>(this); 124 scene.UnregisterModuleInterface<IEventQueue>(this);
@@ -189,14 +187,12 @@ namespace OpenSim.Region.ClientStack.Linden
189 { 187 {
190 if (!queues.ContainsKey(agentId)) 188 if (!queues.ContainsKey(agentId))
191 { 189 {
192 /*
193 m_log.DebugFormat( 190 m_log.DebugFormat(
194 "[EVENTQUEUE]: Adding new queue for agent {0} in region {1}", 191 "[EVENTQUEUE]: Adding new queue for agent {0} in region {1}",
195 agentId, m_scene.RegionInfo.RegionName); 192 agentId, m_scene.RegionInfo.RegionName);
196 */
197 queues[agentId] = new Queue<OSD>(); 193 queues[agentId] = new Queue<OSD>();
198 } 194 }
199 195
200 return queues[agentId]; 196 return queues[agentId];
201 } 197 }
202 } 198 }
@@ -228,8 +224,12 @@ namespace OpenSim.Region.ClientStack.Linden
228 { 224 {
229 Queue<OSD> queue = GetQueue(avatarID); 225 Queue<OSD> queue = GetQueue(avatarID);
230 if (queue != null) 226 if (queue != null)
227 {
231 lock (queue) 228 lock (queue)
232 queue.Enqueue(ev); 229 queue.Enqueue(ev);
230 }
231 else
232 m_log.WarnFormat("[EVENTQUEUE]: (Enqueue) No queue found for agent {0} in region {1}", avatarID, m_scene.RegionInfo.RegionName);
233 } 233 }
234 catch (NullReferenceException e) 234 catch (NullReferenceException e)
235 { 235 {
@@ -244,48 +244,15 @@ namespace OpenSim.Region.ClientStack.Linden
244 244
245 private void ClientClosed(UUID agentID, Scene scene) 245 private void ClientClosed(UUID agentID, Scene scene)
246 { 246 {
247// m_log.DebugFormat("[EVENTQUEUE]: Closed client {0} in region {1}", agentID, m_scene.RegionInfo.RegionName); 247 //m_log.DebugFormat("[EVENTQUEUE]: Closed client {0} in region {1}", agentID, m_scene.RegionInfo.RegionName);
248
249 int count = 0;
250 while (queues.ContainsKey(agentID) && queues[agentID].Count > 0 && count++ < 5)
251 {
252 Thread.Sleep(1000);
253 }
254 248
255 lock (queues) 249 lock (queues)
256 {
257 queues.Remove(agentID); 250 queues.Remove(agentID);
258 }
259 251
260 List<UUID> removeitems = new List<UUID>(); 252 List<UUID> removeitems = new List<UUID>();
261 lock (m_AvatarQueueUUIDMapping) 253 lock (m_AvatarQueueUUIDMapping)
262 m_AvatarQueueUUIDMapping.Remove(agentID); 254 m_AvatarQueueUUIDMapping.Remove(agentID);
263 255
264// lock (m_AvatarQueueUUIDMapping)
265// {
266// foreach (UUID ky in m_AvatarQueueUUIDMapping.Keys)
267// {
268//// m_log.DebugFormat("[EVENTQUEUE]: Found key {0} in m_AvatarQueueUUIDMapping while looking for {1}", ky, AgentID);
269// if (ky == agentID)
270// {
271// removeitems.Add(ky);
272// }
273// }
274//
275// foreach (UUID ky in removeitems)
276// {
277// UUID eventQueueGetUuid = m_AvatarQueueUUIDMapping[ky];
278// m_AvatarQueueUUIDMapping.Remove(ky);
279//
280// string eqgPath = GenerateEqgCapPath(eventQueueGetUuid);
281// MainServer.Instance.RemovePollServiceHTTPHandler("", eqgPath);
282//
283//// m_log.DebugFormat(
284//// "[EVENT QUEUE GET MODULE]: Removed EQG handler {0} for {1} in {2}",
285//// eqgPath, agentID, m_scene.RegionInfo.RegionName);
286// }
287// }
288
289 UUID searchval = UUID.Zero; 256 UUID searchval = UUID.Zero;
290 257
291 removeitems.Clear(); 258 removeitems.Clear();
@@ -305,19 +272,9 @@ namespace OpenSim.Region.ClientStack.Linden
305 foreach (UUID ky in removeitems) 272 foreach (UUID ky in removeitems)
306 m_QueueUUIDAvatarMapping.Remove(ky); 273 m_QueueUUIDAvatarMapping.Remove(ky);
307 } 274 }
308 }
309 275
310 private void MakeChildAgent(ScenePresence avatar) 276 // m_log.DebugFormat("[EVENTQUEUE]: Deleted queues for {0} in region {1}", agentID, m_scene.RegionInfo.RegionName);
311 { 277
312 //m_log.DebugFormat("[EVENTQUEUE]: Make Child agent {0} in region {1}.", avatar.UUID, m_scene.RegionInfo.RegionName);
313 //lock (m_ids)
314 // {
315 //if (m_ids.ContainsKey(avatar.UUID))
316 //{
317 // close the event queue.
318 //m_ids[avatar.UUID] = -1;
319 //}
320 //}
321 } 278 }
322 279
323 /// <summary> 280 /// <summary>
@@ -417,7 +374,12 @@ namespace OpenSim.Region.ClientStack.Linden
417 if (DebugLevel >= 2) 374 if (DebugLevel >= 2)
418 m_log.WarnFormat("POLLED FOR EQ MESSAGES BY {0} in {1}", pAgentId, m_scene.RegionInfo.RegionName); 375 m_log.WarnFormat("POLLED FOR EQ MESSAGES BY {0} in {1}", pAgentId, m_scene.RegionInfo.RegionName);
419 376
420 Queue<OSD> queue = TryGetQueue(pAgentId); 377 Queue<OSD> queue = GetQueue(pAgentId);
378 if (queue == null)
379 {
380 return NoEvents(requestID, pAgentId);
381 }
382
421 OSD element; 383 OSD element;
422 lock (queue) 384 lock (queue)
423 { 385 {
@@ -788,12 +750,12 @@ namespace OpenSim.Region.ClientStack.Linden
788 750
789 } 751 }
790 752
791 public void ChatterBoxSessionAgentListUpdates(UUID sessionID, UUID fromAgent, UUID toAgent, bool canVoiceChat, 753 public void ChatterBoxSessionAgentListUpdates(UUID sessionID, UUID fromAgent, UUID anotherAgent, bool canVoiceChat,
792 bool isModerator, bool textMute) 754 bool isModerator, bool textMute)
793 { 755 {
794 OSD item = EventQueueHelper.ChatterBoxSessionAgentListUpdates(sessionID, fromAgent, canVoiceChat, 756 OSD item = EventQueueHelper.ChatterBoxSessionAgentListUpdates(sessionID, fromAgent, canVoiceChat,
795 isModerator, textMute); 757 isModerator, textMute);
796 Enqueue(item, toAgent); 758 Enqueue(item, fromAgent);
797 //m_log.InfoFormat("########### eq ChatterBoxSessionAgentListUpdates #############\n{0}", item); 759 //m_log.InfoFormat("########### eq ChatterBoxSessionAgentListUpdates #############\n{0}", item);
798 } 760 }
799 761