public static unsafe MPTNode Decode(ReadOnlySpan <byte> data) { if (data.IsEmpty) { return(null); fixed(byte *pointer = data) { using UnmanagedMemoryStream stream = new UnmanagedMemoryStream(pointer, data.Length); using BinaryReader reader = new BinaryReader(stream); MPTNode n = (MPTNode)ReflectionCache <NodeType> .CreateInstance((NodeType)reader.ReadByte()); if (n is null) { throw new InvalidOperationException(); } n.DecodeSpecific(reader); return(n); } }
internal override void DecodeSpecific(BinaryReader reader) { Key = reader.ReadVarBytes(MaxKeyLength); Next = new HashNode(); Next.DecodeSpecific(reader); }