Beispiel #1
0
        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));
        }