org.apache.lucene.util
Class ByteBlockPool
java.lang.Object
org.apache.lucene.util.ByteBlockPool
public final class ByteBlockPool
- extends Object
Class that Posting and PostingVector use to write byte
streams into shared fixed-size byte[] arrays. The idea
is to allocate slices of increasing lengths For
example, the first slice is 5 bytes, the next slice is
14, etc. We start by writing our bytes into the first
5 bytes. When we hit the end of the slice, we allocate
the next slice and then write the address of the new
slice into the last 4 bytes of the previous slice (the
"forwarding address").
Each slice is filled with 0's initially, and we mark
the end with a non-zero byte. This way the methods
that are writing into the slice don't need to record
its length and instead allocate a new slice once they
hit a non-zero byte.
- NOTE: This API is for internal purposes only and might change in incompatible ways in the next release.
Methods inherited from class java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
BYTE_BLOCK_SHIFT
public static final int BYTE_BLOCK_SHIFT
- See Also:
- Constant Field Values
BYTE_BLOCK_SIZE
public static final int BYTE_BLOCK_SIZE
- See Also:
- Constant Field Values
BYTE_BLOCK_MASK
public static final int BYTE_BLOCK_MASK
- See Also:
- Constant Field Values
buffers
public byte[][] buffers
byteUpto
public int byteUpto
buffer
public byte[] buffer
byteOffset
public int byteOffset
nextLevelArray
public static final int[] nextLevelArray
levelSizeArray
public static final int[] levelSizeArray
FIRST_LEVEL_SIZE
public static final int FIRST_LEVEL_SIZE
ByteBlockPool
public ByteBlockPool(ByteBlockPool.Allocator allocator)
dropBuffersAndReset
public void dropBuffersAndReset()
reset
public void reset()
nextBuffer
public void nextBuffer()
newSlice
public int newSlice(int size)
allocSlice
public int allocSlice(byte[] slice,
int upto)
setBytesRef
public final BytesRef setBytesRef(BytesRef term,
int textStart)
copy
public final void copy(BytesRef bytes)
- Copies the given
BytesRef
at the current positions (
byteUpto
across buffer boundaries
copyFrom
public final BytesRef copyFrom(BytesRef bytes)
writePool
public final void writePool(DataOutput out)
throws IOException
- Writes the pools content to the given
DataOutput
- Throws:
IOException