public byte[] GetLeafValue(BTreeLeaf leaf, Key key) { var reader = new LeafReader(this, leaf); var unpacked = DataConverter.Unpack("^i", reader.Read(4), 0); var numKeys = (int)unpacked[0]; int discarded; for (int i = 0; i < numKeys; i++) { byte[] curKey = reader.Read(KeySize); int length = (int)VLQ.ReadVLQ(reader, out discarded); byte[] value = reader.Read(length); if (curKey.SequenceEqual(key.TheKey)) { return(value); } } return(null); }
public static List <Document> ListFromStream(byte[] data) { int discarded; var documents = new List <Document>(); using (StarboundStream ss = new StarboundStream(data)) { int len = (int)VLQ.ReadVLQ(ss, out discarded); for (int i = 0; i < len; i++) { documents.Add(FromStream(ss)); } } return(documents); }