Class BlockReader
- java.lang.Object
-
- org.eclipse.jgit.internal.storage.reftable.BlockReader
-
class BlockReader extends java.lang.Object
Reads a single block forReftableReader
. 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 Summary
Fields Modifier and Type Field Description private byte
blockType
private byte[]
buf
private int
bufLen
private long
endPosition
private int
keysEnd
private int
keysStart
private byte[]
nameBuf
private int
nameLen
private int
ptr
private int
restartCnt
private int
restartTbl
private int
valueType
-
Constructor Summary
Constructors Constructor Description BlockReader()
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description (package private) static int
decodeBlockLen(int typeAndSize)
(package private) long
endPosition()
private long
inflateBuf(BlockSource src, long pos, int blockLen, int fileBlockSize)
private static java.io.IOException
invalidBlock()
private static java.io.IOException
invalidBlock(java.lang.Throwable cause)
(package private) boolean
match(byte[] match, boolean matchIsPrefix)
(package private) java.lang.String
name()
private static Ref
newRef(java.lang.String name, long updateIndex)
(package private) boolean
next()
private void
parseBlockStart(BlockSource src, long pos, int fileBlockSize)
(package private) void
parseKey()
(package private) void
readBlock(BlockSource src, long pos, int fileBlockSize)
private void
readBlockIntoBuf(BlockSource src, long pos, int size)
(package private) LongList
readBlockPositionList()
private short
readInt16()
(package private) ReflogEntry
readLogEntry()
(package private) long
readLogUpdateIndex()
private PersonIdent
readPersonIdent()
(package private) long
readPositionFromIndex()
(package private) Ref
readRef(long minUpdateIndex)
(package private) long
readUpdateIndexDelta()
private ObjectId
readValueId()
private java.lang.String
readValueString()
private int
readVarint32()
private long
readVarint64()
private int
scanToKey(byte[] key, int rPtr, int rIdx, int rCmp)
Performs the linear search step within a restart interval.(package private) int
seekKey(byte[] key)
Finds a key in the block and positions the current pointer on its record.private void
setupEmptyFileBlock()
private void
skipString()
(package private) void
skipValue()
(package private) byte
type()
(package private) void
verifyIndex()
-
-
-
Field Detail
-
blockType
private byte blockType
-
endPosition
private long endPosition
-
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
-
-
Method Detail
-
type
byte type()
-
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()
-
readLogEntry
@Nullable ReflogEntry readLogEntry()
-
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 findkey
.- 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)
-
-