private void RetrieveInstantMessages(IClientAPI client) { if (OfflineMessagesConnector == null) { return; } List <GridInstantMessage> msglist; lock (m_offlineMessagesCache) { if (m_offlineMessagesCache.TryGetValue(client.AgentId, out msglist)) { m_offlineMessagesCache.Remove(client.AgentId); } } if (msglist == null) { msglist = OfflineMessagesConnector.GetOfflineMessages(client.AgentId); } msglist.Sort( delegate(GridInstantMessage a, GridInstantMessage b) { return(a.Timestamp.CompareTo(b.Timestamp)); }); foreach (GridInstantMessage IM in msglist) { // Send through scene event manager so all modules get a chance // to look at this message before it gets delivered. // // Needed for proper state management for stored group // invitations // IM.Offline = 1; m_Scene.EventManager.TriggerIncomingInstantMessage(IM); } }
private void RetrieveInstantMessages(IClientAPI client) { if (OfflineMessagesConnector == null) { return; } m_log.InfoFormat("[OFFLINE MESSAGING] Retrieving stored messages for {0}", client.AgentId); GridInstantMessage[] msglist = OfflineMessagesConnector.GetOfflineMessages(client.AgentId); foreach (GridInstantMessage IM in msglist) { // Send through scene event manager so all modules get a chance // to look at this message before it gets delivered. // // Needed for proper state management for stored group // invitations // Scene s = FindScene(client.AgentId); if (s != null) { s.EventManager.TriggerIncomingInstantMessage(IM); } } }
private void RetrieveInstantMessages(IClientAPI client) { if (OfflineMessagesConnector == null) { return; } MainConsole.Instance.DebugFormat("[OFFLINE MESSAGING] Retrieving stored messages for {0}", client.AgentId); List <GridInstantMessage> msglist = OfflineMessagesConnector.GetOfflineMessages(client.AgentId); msglist.Sort(delegate(GridInstantMessage a, GridInstantMessage b) { return(a.timestamp.CompareTo(b.timestamp)); }); foreach (GridInstantMessage IM in msglist) { // Send through scene event manager so all modules get a chance // to look at this message before it gets delivered. // // Needed for proper state management for stored group // invitations // IM.offline = 1; IScene s = FindScene(client.AgentId); if (s != null) { s.EventManager.TriggerIncomingInstantMessage(IM); } } }
public byte[] GetOfflineMessages(OSDMap request) { OSDArray result = new OSDArray(); UUID PrincipalID = request["PrincipalID"].AsUUID(); GridInstantMessage[] Messages = OfflineMessagesConnector.GetOfflineMessages(PrincipalID); int i = 0; foreach (GridInstantMessage Message in Messages) { result.Add(Message.ToOSD()); i++; } string xmlString = OSDParser.SerializeJsonString(result); //MainConsole.Instance.DebugFormat("[AuroraDataServerPostHandler]: resp string: {0}", xmlString); UTF8Encoding encoding = new UTF8Encoding(); return(encoding.GetBytes(xmlString)); }