Пример #1
0
        static KeyValuePair <Key, Value> ReadPair(byte[] block, ref int offset)
        {
            offset += 1;             // skip over header flag
            offset += 4;             // skip over the tree pointers
            int keySize = Helper.Decode7BitInt(block, ref offset);
            var key     = new Key(ByteArray.From(block, offset, keySize));

            offset += keySize;
            int valueSize = Helper.Decode7BitInt(block, ref offset);
            var val       = Value.From(block, offset, valueSize);

            offset += valueSize;

            // if the next keySize bit is zero then we have exhausted this block. Set to -1 to terminate enumeration
            if (offset >= Config.SortedBlockSize || block [offset] == (byte)RecordHeaderFlag.EndOfBlock)
            {
                offset = -1;
            }

            return(new KeyValuePair <Key, Value> (key, val));
        }