aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Addons/Groups/GroupsMessagingModule.cs
diff options
context:
space:
mode:
authorDiva Canto2013-07-27 19:12:47 -0700
committerDiva Canto2013-07-27 19:12:47 -0700
commit18eca40af3592d9743cf50267a460968e601859c (patch)
tree7dbf0879114b52a22da54fc4305df83324632609 /OpenSim/Addons/Groups/GroupsMessagingModule.cs
parentSeveral major improvements to group (V2) chat. Specifically: handle join/drop... (diff)
downloadopensim-SC-18eca40af3592d9743cf50267a460968e601859c.zip
opensim-SC-18eca40af3592d9743cf50267a460968e601859c.tar.gz
opensim-SC-18eca40af3592d9743cf50267a460968e601859c.tar.bz2
opensim-SC-18eca40af3592d9743cf50267a460968e601859c.tar.xz
More bug fixes on group chat
Diffstat (limited to 'OpenSim/Addons/Groups/GroupsMessagingModule.cs')
-rw-r--r--OpenSim/Addons/Groups/GroupsMessagingModule.cs34
1 files changed, 19 insertions, 15 deletions
diff --git a/OpenSim/Addons/Groups/GroupsMessagingModule.cs b/OpenSim/Addons/Groups/GroupsMessagingModule.cs
index be76ef1..04e2b80 100644
--- a/OpenSim/Addons/Groups/GroupsMessagingModule.cs
+++ b/OpenSim/Addons/Groups/GroupsMessagingModule.cs
@@ -132,7 +132,6 @@ namespace OpenSim.Groups
132 scene.EventManager.OnIncomingInstantMessage += OnGridInstantMessage; 132 scene.EventManager.OnIncomingInstantMessage += OnGridInstantMessage;
133 scene.EventManager.OnClientLogin += OnClientLogin; 133 scene.EventManager.OnClientLogin += OnClientLogin;
134 } 134 }
135
136 public void RegionLoaded(Scene scene) 135 public void RegionLoaded(Scene scene)
137 { 136 {
138 if (!m_groupMessagingEnabled) 137 if (!m_groupMessagingEnabled)
@@ -271,7 +270,8 @@ namespace OpenSim.Groups
271 } 270 }
272 271
273 // Send to self first of all 272 // Send to self first of all
274 im.toAgentID = im.fromAgentID; 273 im.toAgentID = im.fromAgentID;
274 im.fromGroup = true;
275 ProcessMessageFromGroupSession(im); 275 ProcessMessageFromGroupSession(im);
276 276
277 List<UUID> regions = new List<UUID>(); 277 List<UUID> regions = new List<UUID>();
@@ -330,8 +330,7 @@ namespace OpenSim.Groups
330 } 330 }
331 } 331 }
332 332
333 // Temporary for assessing how long it still takes to send messages to large online groups. 333 if (m_debugEnabled)
334 if (m_messageOnlineAgentsOnly)
335 m_log.DebugFormat( 334 m_log.DebugFormat(
336 "[Groups.Messaging]: SendMessageToGroup for group {0} with {1} visible members, {2} online took {3}ms", 335 "[Groups.Messaging]: SendMessageToGroup for group {0} with {1} visible members, {2} online took {3}ms",
337 groupID, groupMembersCount, groupMembers.Count(), Environment.TickCount - requestStartTick); 336 groupID, groupMembersCount, groupMembers.Count(), Environment.TickCount - requestStartTick);
@@ -349,6 +348,7 @@ namespace OpenSim.Groups
349 if (m_debugEnabled) m_log.DebugFormat("[Groups.Messaging]: OnInstantMessage registered for {0}", client.Name); 348 if (m_debugEnabled) m_log.DebugFormat("[Groups.Messaging]: OnInstantMessage registered for {0}", client.Name);
350 349
351 client.OnInstantMessage += OnInstantMessage; 350 client.OnInstantMessage += OnInstantMessage;
351 ResetAgentGroupChatSessions(client.AgentId.ToString());
352 } 352 }
353 353
354 private void OnGridInstantMessage(GridInstantMessage msg) 354 private void OnGridInstantMessage(GridInstantMessage msg)
@@ -432,16 +432,19 @@ namespace OpenSim.Groups
432 UUID AgentID = sp.UUID; 432 UUID AgentID = sp.UUID;
433 msg.toAgentID = AgentID.Guid; 433 msg.toAgentID = AgentID.Guid;
434 434
435 if (!hasAgentDroppedGroupChatSession(AgentID.ToString(), GroupID) 435 if (!hasAgentDroppedGroupChatSession(AgentID.ToString(), GroupID))
436 && !hasAgentBeenInvitedToGroupChatSession(AgentID.ToString(), GroupID))
437 { 436 {
438 AddAgentToSession(AgentID, GroupID, msg); 437 if (!hasAgentBeenInvitedToGroupChatSession(AgentID.ToString(), GroupID))
439 } 438 AddAgentToSession(AgentID, GroupID, msg);
440 439 else
441 if (m_debugEnabled) m_log.DebugFormat("[Groups.Messaging]: Passing to ProcessMessageFromGroupSession to deliver to {0} locally", sp.Name); 440 {
441 if (m_debugEnabled) m_log.DebugFormat("[Groups.Messaging]: Passing to ProcessMessageFromGroupSession to deliver to {0} locally", sp.Name);
442 442
443 ProcessMessageFromGroupSession(msg); 443 ProcessMessageFromGroupSession(msg);
444 }
445 }
444 }); 446 });
447
445 } 448 }
446 } 449 }
447 } 450 }
@@ -664,12 +667,12 @@ namespace OpenSim.Groups
664 { 667 {
665 if (!sp.IsChildAgent) 668 if (!sp.IsChildAgent)
666 { 669 {
667 if (m_debugEnabled) m_log.WarnFormat("[Groups.Messaging]: Found root agent for client : {0}", sp.ControllingClient.Name); 670 if (m_debugEnabled) m_log.DebugFormat("[Groups.Messaging]: Found root agent for client : {0}", sp.ControllingClient.Name);
668 return sp.ControllingClient; 671 return sp.ControllingClient;
669 } 672 }
670 else 673 else
671 { 674 {
672 if (m_debugEnabled) m_log.WarnFormat("[Groups.Messaging]: Found child agent for client : {0}", sp.ControllingClient.Name); 675 if (m_debugEnabled) m_log.DebugFormat("[Groups.Messaging]: Found child agent for client : {0}", sp.ControllingClient.Name);
673 child = sp.ControllingClient; 676 child = sp.ControllingClient;
674 } 677 }
675 } 678 }
@@ -694,9 +697,10 @@ namespace OpenSim.Groups
694 public void ResetAgentGroupChatSessions(string agentID) 697 public void ResetAgentGroupChatSessions(string agentID)
695 { 698 {
696 foreach (List<string> agentList in m_groupsAgentsDroppedFromChatSession.Values) 699 foreach (List<string> agentList in m_groupsAgentsDroppedFromChatSession.Values)
697 {
698 agentList.Remove(agentID); 700 agentList.Remove(agentID);
699 } 701
702 foreach (List<string> agentList in m_groupsAgentsInvitedToChatSession.Values)
703 agentList.Remove(agentID);
700 } 704 }
701 705
702 public bool hasAgentBeenInvitedToGroupChatSession(string agentID, UUID groupID) 706 public bool hasAgentBeenInvitedToGroupChatSession(string agentID, UUID groupID)