Exemplo n.º 1
0
        public bool StoreMessage(GridInstantMessage im, out string reason)
        {
            reason = string.Empty;

            // TODO Check limits
            UUID principalID = new UUID(im.toAgentID);
            long count       = m_Database.GetCount("PrincipalID", principalID.ToString());

            if (count >= MAX_IM)
            {
                reason = "Number of offline IMs has maxed out";
                return(false);
            }

            string imXml = string.Empty;

            using (MemoryStream mstream = new MemoryStream())
            {
                XmlWriterSettings settings = new XmlWriterSettings();
                settings.Encoding = Encoding.UTF8;

                using (XmlWriter writer = XmlWriter.Create(mstream, settings))
                {
                    m_serializer.Serialize(writer, im);
                    writer.Flush();

                    mstream.Position = 0;
                    using (StreamReader sreader = new StreamReader(mstream))
                    {
                        imXml = sreader.ReadToEnd();
                    }
                }
            }

            OfflineIMData data = new OfflineIMData();

            data.PrincipalID     = principalID;
            data.Data            = new Dictionary <string, string>();
            data.Data["Message"] = imXml;

            return(m_Database.Store(data));
        }
Exemplo n.º 2
0
        public bool StoreMessage(GridInstantMessage im, out string reason)
        {
            reason = string.Empty;

            // Check limits
            UUID principalID = new UUID(im.toAgentID);
            long count       = m_Database.GetCount("PrincipalID", principalID.ToString());

            if (count >= MAX_IM)
            {
                reason = "Number of offline IMs has maxed out";
                return(false);
            }

            string imXml;

            using (MemoryStream mstream = new MemoryStream())
            {
                XmlWriterSettings settings = new XmlWriterSettings();
                settings.Encoding = Util.UTF8NoBomEncoding;

                using (XmlWriter writer = XmlWriter.Create(mstream, settings))
                {
                    m_serializer.Serialize(writer, im);
                    writer.Flush();
                }

                imXml = Util.UTF8NoBomEncoding.GetString(mstream.ToArray());
            }

            OfflineIMData data = new OfflineIMData();

            data.PrincipalID     = principalID;
            data.FromID          = new UUID(im.fromAgentID);
            data.Data            = new Dictionary <string, string>();
            data.Data["Message"] = imXml;

            return(m_Database.Store(data));
        }