Class BlockReader


  • class BlockReader
    extends java.lang.Object
    Reads a single block for ReftableReader. Instances are tied to a specific block in the file so are not reused for other blocks. Instances hold an offset into the block.
    • Field Detail

      • blockType

        private byte blockType
      • endPosition

        private long endPosition
      • truncated

        private boolean truncated
      • buf

        private byte[] buf
      • bufLen

        private int bufLen
      • ptr

        private int ptr
      • keysStart

        private int keysStart
      • keysEnd

        private int keysEnd
      • restartCnt

        private int restartCnt
      • restartTbl

        private int restartTbl
      • nameBuf

        private byte[] nameBuf
      • nameLen

        private int nameLen
      • valueType

        private int valueType
    • Constructor Detail

      • BlockReader

        BlockReader()
    • Method Detail

      • type

        byte type()
      • truncated

        boolean truncated()
      • endPosition

        long endPosition()
      • next

        boolean next()
      • parseKey

        void parseKey()
      • name

        java.lang.String name()
      • match

        boolean match​(byte[] match,
                      boolean matchIsPrefix)
      • readPositionFromIndex

        long readPositionFromIndex()
                            throws java.io.IOException
        Throws:
        java.io.IOException
      • readUpdateIndexDelta

        long readUpdateIndexDelta()
      • readRef

        Ref readRef​(long minUpdateIndex)
             throws java.io.IOException
        Throws:
        java.io.IOException
      • readLogUpdateIndex

        long readLogUpdateIndex()
      • readValueId

        private ObjectId readValueId()
      • readValueString

        private java.lang.String readValueString()
      • readPersonIdent

        private PersonIdent readPersonIdent()
      • readBlock

        void readBlock​(BlockSource src,
                       long pos,
                       int fileBlockSize)
                throws java.io.IOException
        Throws:
        java.io.IOException
      • readBlockIntoBuf

        private void readBlockIntoBuf​(BlockSource src,
                                      long pos,
                                      int size)
                               throws java.io.IOException
        Throws:
        java.io.IOException
      • parseBlockStart

        private void parseBlockStart​(BlockSource src,
                                     long pos,
                                     int fileBlockSize)
                              throws java.io.IOException
        Throws:
        java.io.IOException
      • decodeBlockLen

        static int decodeBlockLen​(int typeAndSize)
      • inflateBuf

        private long inflateBuf​(BlockSource src,
                                long pos,
                                int blockLen,
                                int fileBlockSize)
                         throws java.io.IOException
        Throws:
        java.io.IOException
      • setupEmptyFileBlock

        private void setupEmptyFileBlock()
      • verifyIndex

        void verifyIndex()
                  throws java.io.IOException
        Throws:
        java.io.IOException
      • seekKey

        int seekKey​(byte[] key)
        Finds a key in the block and positions the current pointer on its record.

        As a side-effect this method arranges for the current pointer to be near or exactly on key, allowing other methods to access data from that current record:

        Parameters:
        key - key to find.
        Returns:
        <0 if the key occurs before the start of this block; 0 if the block is positioned on the key; >0 if the key occurs after the last key of this block.
      • scanToKey

        private int scanToKey​(byte[] key,
                              int rPtr,
                              int rIdx,
                              int rCmp)
        Performs the linear search step within a restart interval.

        Starts at a restart position whose key sorts before (or equal to) key and walks sequentially through the following prefix compressed records to find key.

        Parameters:
        key - key the caller wants to find.
        rPtr - current record pointer from restart table binary search.
        rIdx - current restart table index.
        rCmp - result of compare from restart table binary search.
        Returns:
        <0 if the key occurs before the start of this block; 0 if the block is positioned on the key; >0 if the key occurs after the last key of this block.
      • skipValue

        void skipValue()
      • skipString

        private void skipString()
      • readInt16

        private short readInt16()
      • readVarint32

        private int readVarint32()
      • readVarint64

        private long readVarint64()
      • newRef

        private static Ref newRef​(java.lang.String name,
                                  long updateIndex)
      • invalidBlock

        private static java.io.IOException invalidBlock()
      • invalidBlock

        private static java.io.IOException invalidBlock​(java.lang.Throwable cause)