private void SendInstantMessages(object message) { GridInstantMessage im = message as GridInstantMessage; ChatSession session = m_groupData.GetSession(im.imSessionID); if (session == null) { return; } List <UUID> agentsToSendTo = new List <UUID>(); foreach (ChatSessionMember member in session.Members) { if (member.HasBeenAdded) { agentsToSendTo.Add(member.AvatarKey); } else { IClientAPI client = GetActiveClient(member.AvatarKey); if (client != null) { client.Scene.RequestModuleInterface <IEventQueueService>().ChatterboxInvitation( session.SessionID , session.Name , im.fromAgentID , im.message , member.AvatarKey , im.fromAgentName , im.dialog , im.timestamp , im.offline == 1 , (int)im.ParentEstateID , im.Position , 1 , im.imSessionID , true , Utils.StringToBytes(session.Name) , client.Scene.RegionInfo.RegionHandle ); } else { agentsToSendTo.Add(member.AvatarKey); //Forward it on, the other sim should take care of it } } } m_msgTransferModule.SendInstantMessages(im, agentsToSendTo); }
private void SendInstantMessages(object message) { GridInstantMessage msg = message as GridInstantMessage; List <GroupMembersData> members = m_groupData.GetGroupMembers(UUID.Parse(msg.fromAgentID.ToString()), UUID.Parse(msg.imSessionID.ToString())); List <UUID> agentsToSendTo = new List <UUID>(); foreach (GroupMembersData member in members) { if (m_groupData.hasAgentDroppedGroupChatSession(member.AgentID, UUID.Parse(msg.imSessionID.ToString()))) { // Don't deliver messages to people who have dropped this session if (m_debugEnabled) { m_log.DebugFormat("[GROUPS-MESSAGING]: {0} has dropped session, not delivering to them", member.AgentID); } continue; } agentsToSendTo.Add(member.AgentID); } m_msgTransferModule.SendInstantMessages(msg, agentsToSendTo); /*foreach (GroupMembersData member in m_groupData.GetGroupMembers(UUID.Parse(msg.fromAgentID.ToString()), UUID.Parse(msg.imSessionID.ToString()))) * { * if (m_groupData.hasAgentDroppedGroupChatSession(member.AgentID, UUID.Parse(msg.imSessionID.ToString()))) * { * // Don't deliver messages to people who have dropped this session * if (m_debugEnabled) m_log.DebugFormat("[GROUPS-MESSAGING]: {0} has dropped session, not delivering to them", member.AgentID); * continue; * } * * msg.toAgentID = member.AgentID.Guid; * * m_log.DebugFormat("[GROUPS-MESSAGING]: Delivering to {0}", member.AgentID); * m_msgTransferModule.SendInstantMessage(msg, delegate(bool success) * { * if (!success && m_removeOfflineAgentsFromGroupIMs) * m_groupData.AgentDroppedFromGroupChatSession(member.AgentID, UUID.Parse(msg.imSessionID.ToString())); * }); * }*/ }