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); }
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); }