Class ByteBufferIndexInput
- All Implemented Interfaces:
Closeable
,AutoCloseable
,Cloneable
,RandomAccessInput
Because Java's ByteBuffer uses an int to address the values, it's necessary to access a file greater Integer.MAX_VALUE in size using multiple byte buffers.
For efficiency, this class requires that the buffers are a power-of-two (chunkSizePower
).
-
Field Summary
FieldsModifier and TypeFieldDescriptionprotected ByteBuffer[]
protected final long
protected final int
protected ByteBuffer
protected int
protected final org.apache.lucene.store.ByteBufferGuard
protected boolean
protected final long
-
Method Summary
Modifier and TypeMethodDescriptionprotected ByteBufferIndexInput
buildSlice
(String sliceDescription, long offset, long length) Builds the actual sliced IndexInput (may apply extra offset in subclasses).final ByteBufferIndexInput
clone()
Returns a clone of this stream.final void
close()
Closes the stream to further operations.long
Returns the current position in this file, where the next read will occur.final long
length()
The number of bytes in the file.protected ByteBufferIndexInput
newCloneInstance
(String newResourceDescription, ByteBuffer[] newBuffers, int offset, long length) Factory method that creates a suitable implementation of this class for the given ByteBuffers.static ByteBufferIndexInput
newInstance
(String resourceDescription, ByteBuffer[] buffers, long length, int chunkSizePower, org.apache.lucene.store.ByteBufferGuard guard) final byte
readByte()
Reads and returns a single byte.byte
readByte
(long pos) Reads a byte at the given position in the filefinal void
readBytes
(byte[] b, int offset, int len) Reads a specified number of bytes into an array at the specified offset.final void
readFloats
(float[] floats, int offset, int len) Reads a specified number of floats into an array at the specified offset.final int
readInt()
Reads four bytes and returns an int (LE byte order).int
readInt
(long pos) Reads an integer (LE byte order) at the given position in the filefinal long
readLong()
Reads eight bytes and returns a long (LE byte order).long
readLong
(long pos) Reads a long (LE byte order) at the given position in the filevoid
readLongs
(long[] dst, int offset, int length) Read a specified number of longs.final short
Reads two bytes and returns a short (LE byte order).short
readShort
(long pos) Reads a short (LE byte order) at the given position in the filevoid
seek
(long pos) Sets current position in this file, where the next read will occur.protected void
setCurBuf
(ByteBuffer curBuf) final ByteBufferIndexInput
Creates a slice of this index input, with the given description, offset, and length.Methods inherited from class org.apache.lucene.store.IndexInput
getFullSliceDescription, randomAccessSlice, skipBytes, toString
Methods inherited from class org.apache.lucene.store.DataInput
readBytes, readMapOfStrings, readSetOfStrings, readString, readVInt, readVLong, readZInt, readZLong
-
Field Details
-
length
protected final long length -
chunkSizeMask
protected final long chunkSizeMask -
chunkSizePower
protected final int chunkSizePower -
guard
protected final org.apache.lucene.store.ByteBufferGuard guard -
buffers
-
curBufIndex
protected int curBufIndex -
curBuf
-
isClone
protected boolean isClone
-
-
Method Details
-
newInstance
public static ByteBufferIndexInput newInstance(String resourceDescription, ByteBuffer[] buffers, long length, int chunkSizePower, org.apache.lucene.store.ByteBufferGuard guard) -
setCurBuf
-
readByte
Description copied from class:DataInput
Reads and returns a single byte.- Specified by:
readByte
in classDataInput
- Throws:
IOException
- See Also:
-
readBytes
Description copied from class:DataInput
Reads a specified number of bytes into an array at the specified offset.- Specified by:
readBytes
in classDataInput
- Parameters:
b
- the array to read bytes intooffset
- the offset in the array to start storing byteslen
- the number of bytes to read- Throws:
IOException
- See Also:
-
readLongs
Description copied from class:DataInput
Read a specified number of longs.- Overrides:
readLongs
in classDataInput
- Throws:
IOException
-
readFloats
Description copied from class:DataInput
Reads a specified number of floats into an array at the specified offset.- Overrides:
readFloats
in classDataInput
- Parameters:
floats
- the array to read bytes intooffset
- the offset in the array to start storing floatslen
- the number of floats to read- Throws:
IOException
-
readShort
Description copied from class:DataInput
Reads two bytes and returns a short (LE byte order).- Overrides:
readShort
in classDataInput
- Throws:
IOException
- See Also:
-
readInt
Description copied from class:DataInput
Reads four bytes and returns an int (LE byte order).- Overrides:
readInt
in classDataInput
- Throws:
IOException
- See Also:
-
readLong
Description copied from class:DataInput
Reads eight bytes and returns a long (LE byte order).- Overrides:
readLong
in classDataInput
- Throws:
IOException
- See Also:
-
getFilePointer
public long getFilePointer()Description copied from class:IndexInput
Returns the current position in this file, where the next read will occur.- Specified by:
getFilePointer
in classIndexInput
- See Also:
-
seek
Description copied from class:IndexInput
Sets current position in this file, where the next read will occur. If this is beyond the end of the file then this will throwEOFException
and then the stream is in an undetermined state.- Specified by:
seek
in classIndexInput
- Throws:
IOException
- See Also:
-
readByte
Description copied from interface:RandomAccessInput
Reads a byte at the given position in the file- Specified by:
readByte
in interfaceRandomAccessInput
- Throws:
IOException
- See Also:
-
readShort
Description copied from interface:RandomAccessInput
Reads a short (LE byte order) at the given position in the file- Specified by:
readShort
in interfaceRandomAccessInput
- Throws:
IOException
- See Also:
-
readInt
Description copied from interface:RandomAccessInput
Reads an integer (LE byte order) at the given position in the file- Specified by:
readInt
in interfaceRandomAccessInput
- Throws:
IOException
- See Also:
-
readLong
Description copied from interface:RandomAccessInput
Reads a long (LE byte order) at the given position in the file- Specified by:
readLong
in interfaceRandomAccessInput
- Throws:
IOException
- See Also:
-
length
public final long length()Description copied from class:IndexInput
The number of bytes in the file.- Specified by:
length
in classIndexInput
-
clone
Description copied from class:IndexInput
Returns a clone of this stream.Clones of a stream access the same data, and are positioned at the same point as the stream they were cloned from.
Expert: Subclasses must ensure that clones may be positioned at different points in the input from each other and from the stream they were cloned from.
Warning: Lucene never closes cloned
IndexInput
s, it will only callIndexInput.close()
on the original object.If you access the cloned IndexInput after closing the original object, any
readXXX
methods will throwAlreadyClosedException
.This method is NOT thread safe, so if the current
IndexInput
is being used by one thread whileclone
is called by another, disaster could strike.- Overrides:
clone
in classIndexInput
-
slice
Creates a slice of this index input, with the given description, offset, and length. The slice is seeked to the beginning.- Specified by:
slice
in classIndexInput
-
buildSlice
Builds the actual sliced IndexInput (may apply extra offset in subclasses). * -
newCloneInstance
protected ByteBufferIndexInput newCloneInstance(String newResourceDescription, ByteBuffer[] newBuffers, int offset, long length) Factory method that creates a suitable implementation of this class for the given ByteBuffers. -
close
Description copied from class:IndexInput
Closes the stream to further operations.- Specified by:
close
in interfaceAutoCloseable
- Specified by:
close
in interfaceCloseable
- Specified by:
close
in classIndexInput
- Throws:
IOException
-