/// <summary>
/// Only subscribed keys in the same namespace are saved.
/// </summary>
/// <param name="dict"></param>
/// <returns>XML file</returns>
public static MemoryStream Save(P2PDictionary dict)
{
MemoryStream writeStream = new MemoryStream();
System.Xml.XmlTextWriter writer = new XmlTextWriter(writeStream, Encoding.UTF8);
ICollection<string> keys = dict.Keys;
writer.WriteStartDocument();
writer.WriteStartElement("p2pdictionary");
writer.WriteStartElement("namespace");
writer.WriteAttributeString("name", dict.Namespace);
writer.WriteAttributeString("description", dict.Description);
IFormatter formatter = new BinaryFormatter();
foreach (string k in keys)
{
writer.WriteStartElement("entry");
writer.WriteAttributeString("key", k);
using (MemoryStream contents = new MemoryStream())
{
formatter.Serialize(contents, dict[k]);
writer.WriteBase64(contents.GetBuffer(), 0, (int)contents.Length);
}
writer.WriteEndElement();
}
writer.WriteEndElement();
writer.WriteEndElement();
writer.Flush();
return writeStream;
}