예제 #1
0
        public static VersionInfo Read(Stream stream)
        {
            var result = new VersionInfo();
            var buffer = new byte[sizeof(int)];

            stream.Read(buffer, 0, sizeof(int));
            result.CreateChangeNumber = BitConverter.ToInt32(buffer, 0);
            stream.Read(buffer, 0, sizeof(int));
            result.ExpireChangeNumber = BitConverter.ToInt32(buffer, 0);
            result.VersionReference   = DbItemReference.Read(stream);

            return(result);
        }
예제 #2
0
        private IRadixTreeNode NodeFromBytes(byte[] nodeBytes)
        {
            var result = new RadixTreeNode(0);

            using (var ms = new MemoryStream(nodeBytes, false))
            {
                var buffer = new byte[PageFormatter.OnPagePointerSize];

                ms.Read(buffer, 0, PageFormatter.OnPagePointerSize); // overall size

                ms.Read(buffer, 0, PageFormatter.OnPagePointerSize); // prefix length
                short prefixLength = BitConverter.ToInt16(buffer, 0);
                var   prefix       = new byte[prefixLength];
                ms.Read(prefix, 0, prefixLength); // prefix itself
                result.Prefix              = prefix;
                result.ValueReference      = DbItemReference.Read(ms);
                result.ParentNodeReference = DbItemReference.Read(ms);

                if (DbItemReference.IsNull(result.ValueReference))
                {
                    result.ValueReference = null;
                }
                if (DbItemReference.IsNull(result.ParentNodeReference))
                {
                    result.ParentNodeReference = null;
                }

                ms.Read(buffer, 0, sizeof(short));
                var nodeCount = BitConverter.ToInt16(buffer, 0);
                for (int i = 0; i < nodeCount; i++)
                {
                    var key   = (byte)ms.ReadByte();
                    var value = DbItemReference.Read(ms);
                    result.Entries.Add(new KeyValuePair <byte, DbItemReference>(key, value));
                }

                return(result);
            }
        }