Ejemplo n.º 1
0
        public byte[] Persist(IKdbTree tree, byte[] hashOfHeader)
        {
            var metaElement = tree.Document.Descendants("Meta").FirstOrDefault();
            if (metaElement == null)
            {
                metaElement = new XElement("Meta", new XElement("Generator", "MetroPass"));
                tree.Document.Add(metaElement);
            }
            var headerHashElement = metaElement.Elements("HeaderHash").FirstOrDefault();
            if (headerHashElement == null)
            {
                headerHashElement = new XElement("HeaderHash");
                metaElement.Add(headerHashElement);
            }
            headerHashElement.Value = Convert.ToBase64String(hashOfHeader);
            var root = tree.Document.Descendants("Root").First();

            EncodeXml(root);

            MemoryStream ms = new MemoryStream();

            using (XmlWriter xw = XmlWriter.Create(ms))
            {
                tree.Document.WriteTo(xw);
            }

            return ms.ToArray() ;         
        }
        public IKdbWriter CreateWriter(IKdbTree tree)
        {
            if (tree is Kdb4Tree)
            {

                return new Kdb4Writer(new Kdb4HeaderWriter(),
                    _databaseEncryptor,
                    _keyTransformer,
                    _hasher,
                    _gzipFactory);

            }
            else
            {
                throw new NotSupportedException();
            }

        }