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