Class BufferedIndexInput
- java.lang.Object
-
- org.apache.lucene.store.DataInput
-
- org.apache.lucene.store.IndexInput
-
- org.apache.lucene.store.BufferedIndexInput
-
- All Implemented Interfaces:
Closeable,AutoCloseable,Cloneable,RandomAccessInput
public abstract class BufferedIndexInput extends IndexInput implements RandomAccessInput
Base implementation class for bufferedIndexInput.
-
-
Field Summary
Fields Modifier and Type Field Description protected byte[]bufferstatic intBUFFER_SIZEDefault buffer size set to 1024.static intMERGE_BUFFER_SIZEA buffer size for merges set to 4096.static intMIN_BUFFER_SIZEMinimum buffer size allowed
-
Constructor Summary
Constructors Constructor Description BufferedIndexInput(String resourceDesc)BufferedIndexInput(String resourceDesc, int bufferSize)Inits BufferedIndexInput with a specific bufferSizeBufferedIndexInput(String resourceDesc, IOContext context)
-
Method Summary
All Methods Static Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description static intbufferSize(IOContext context)Returns default buffer sizes for the givenIOContextBufferedIndexInputclone()Returns a clone of this stream.protected intflushBuffer(IndexOutput out, long numBytes)Flushes the in-memory buffer to the given output, copying at mostnumBytes.intgetBufferSize()Returns buffer size.longgetFilePointer()Returns the current position in this file, where the next read will occur.protected voidnewBuffer(byte[] newBuffer)bytereadByte()Reads and returns a single byte.bytereadByte(long pos)Reads a byte at the given position in the filevoidreadBytes(byte[] b, int offset, int len)Reads a specified number of bytes into an array at the specified offset.voidreadBytes(byte[] b, int offset, int len, boolean useBuffer)Reads a specified number of bytes into an array at the specified offset with control over whether the read should be buffered (callers who have their own buffer should pass in "false" for useBuffer).intreadInt()Reads four bytes and returns an int.intreadInt(long pos)Reads an integer at the given position in the fileprotected abstract voidreadInternal(byte[] b, int offset, int length)Expert: implements buffer refill.longreadLong()Reads eight bytes and returns a long.longreadLong(long pos)Reads a long at the given position in the fileshortreadShort()Reads two bytes and returns a short.shortreadShort(long pos)Reads a short at the given position in the fileintreadVInt()Reads an int stored in variable-length format.longreadVLong()Reads a long stored in variable-length format.voidseek(long pos)Sets current position in this file, where the next read will occur.protected abstract voidseekInternal(long pos)Expert: implements seek.voidsetBufferSize(int newSize)Change the buffer size used by this IndexInputIndexInputslice(String sliceDescription, long offset, long length)Creates a slice of this index input, with the given description, offset, and length.static BufferedIndexInputwrap(String sliceDescription, IndexInput other, long offset, long length)Wraps a portion of another IndexInput with buffering.-
Methods inherited from class org.apache.lucene.store.IndexInput
close, getFullSliceDescription, length, randomAccessSlice, toString
-
Methods inherited from class org.apache.lucene.store.DataInput
readLELongs, readMapOfStrings, readSetOfStrings, readString, readZInt, readZLong, skipBytes
-
-
-
-
Field Detail
-
BUFFER_SIZE
public static final int BUFFER_SIZE
Default buffer size set to 1024.- See Also:
- Constant Field Values
-
MIN_BUFFER_SIZE
public static final int MIN_BUFFER_SIZE
Minimum buffer size allowed- See Also:
- Constant Field Values
-
MERGE_BUFFER_SIZE
public static final int MERGE_BUFFER_SIZE
A buffer size for merges set to 4096.- See Also:
- Constant Field Values
-
buffer
protected byte[] buffer
-
-
Method Detail
-
readByte
public final byte readByte() throws IOExceptionDescription copied from class:DataInputReads and returns a single byte.- Specified by:
readBytein classDataInput- Throws:
IOException- See Also:
DataOutput.writeByte(byte)
-
setBufferSize
public final void setBufferSize(int newSize)
Change the buffer size used by this IndexInput
-
newBuffer
protected void newBuffer(byte[] newBuffer)
-
getBufferSize
public final int getBufferSize()
Returns buffer size. @see #setBufferSize
-
readBytes
public final void readBytes(byte[] b, int offset, int len) throws IOExceptionDescription copied from class:DataInputReads a specified number of bytes into an array at the specified offset.- Specified by:
readBytesin 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:
DataOutput.writeBytes(byte[],int)
-
readBytes
public final void readBytes(byte[] b, int offset, int len, boolean useBuffer) throws IOExceptionDescription copied from class:DataInputReads a specified number of bytes into an array at the specified offset with control over whether the read should be buffered (callers who have their own buffer should pass in "false" for useBuffer). Currently onlyBufferedIndexInputrespects this parameter.- Overrides:
readBytesin classDataInput- Parameters:
b- the array to read bytes intooffset- the offset in the array to start storing byteslen- the number of bytes to readuseBuffer- set to false if the caller will handle buffering.- Throws:
IOException- See Also:
DataOutput.writeBytes(byte[],int)
-
readShort
public final short readShort() throws IOExceptionDescription copied from class:DataInputReads two bytes and returns a short.- Overrides:
readShortin classDataInput- Throws:
IOException- See Also:
DataOutput.writeByte(byte)
-
readInt
public final int readInt() throws IOExceptionDescription copied from class:DataInputReads four bytes and returns an int.- Overrides:
readIntin classDataInput- Throws:
IOException- See Also:
DataOutput.writeInt(int)
-
readLong
public final long readLong() throws IOExceptionDescription copied from class:DataInputReads eight bytes and returns a long.- Overrides:
readLongin classDataInput- Throws:
IOException- See Also:
DataOutput.writeLong(long)
-
readVInt
public final int readVInt() throws IOExceptionDescription copied from class:DataInputReads an int stored in variable-length format. Reads between one and five bytes. Smaller values take fewer bytes. Negative numbers are supported, but should be avoided.The format is described further in
DataOutput.writeVInt(int).- Overrides:
readVIntin classDataInput- Throws:
IOException- See Also:
DataOutput.writeVInt(int)
-
readVLong
public final long readVLong() throws IOExceptionDescription copied from class:DataInputReads a long stored in variable-length format. Reads between one and nine bytes. Smaller values take fewer bytes. Negative numbers are not supported.The format is described further in
DataOutput.writeVInt(int).- Overrides:
readVLongin classDataInput- Throws:
IOException- See Also:
DataOutput.writeVLong(long)
-
readByte
public final byte readByte(long pos) throws IOExceptionDescription copied from interface:RandomAccessInputReads a byte at the given position in the file- Specified by:
readBytein interfaceRandomAccessInput- Throws:
IOException- See Also:
DataInput.readByte()
-
readShort
public final short readShort(long pos) throws IOExceptionDescription copied from interface:RandomAccessInputReads a short at the given position in the file- Specified by:
readShortin interfaceRandomAccessInput- Throws:
IOException- See Also:
DataInput.readShort()
-
readInt
public final int readInt(long pos) throws IOExceptionDescription copied from interface:RandomAccessInputReads an integer at the given position in the file- Specified by:
readIntin interfaceRandomAccessInput- Throws:
IOException- See Also:
DataInput.readInt()
-
readLong
public final long readLong(long pos) throws IOExceptionDescription copied from interface:RandomAccessInputReads a long at the given position in the file- Specified by:
readLongin interfaceRandomAccessInput- Throws:
IOException- See Also:
DataInput.readLong()
-
readInternal
protected abstract void readInternal(byte[] b, int offset, int length) throws IOExceptionExpert: implements buffer refill. Reads bytes from the current position in the input.- Parameters:
b- the array to read bytes intooffset- the offset in the array to start storing byteslength- the number of bytes to read- Throws:
IOException
-
getFilePointer
public final long getFilePointer()
Description copied from class:IndexInputReturns the current position in this file, where the next read will occur.- Specified by:
getFilePointerin classIndexInput- See Also:
IndexInput.seek(long)
-
seek
public final void seek(long pos) throws IOExceptionDescription copied from class:IndexInputSets current position in this file, where the next read will occur. If this is beyond the end of the file then this will throwEOFExceptionand then the stream is in an undetermined state.- Specified by:
seekin classIndexInput- Throws:
IOException- See Also:
IndexInput.getFilePointer()
-
seekInternal
protected abstract void seekInternal(long pos) throws IOExceptionExpert: implements seek. Sets current position in this file, where the nextreadInternal(byte[],int,int)will occur.- Throws:
IOException- See Also:
readInternal(byte[],int,int)
-
clone
public BufferedIndexInput clone()
Description copied from class:IndexInputReturns 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
IndexInputs, it will only callIndexInput.close()on the original object.If you access the cloned IndexInput after closing the original object, any
readXXXmethods will throwAlreadyClosedException.This method is NOT thread safe, so if the current
IndexInputis being used by one thread whilecloneis called by another, disaster could strike.- Overrides:
clonein classIndexInput
-
slice
public IndexInput slice(String sliceDescription, long offset, long length) throws IOException
Description copied from class:IndexInputCreates a slice of this index input, with the given description, offset, and length. The slice is sought to the beginning.- Specified by:
slicein classIndexInput- Throws:
IOException
-
flushBuffer
protected final int flushBuffer(IndexOutput out, long numBytes) throws IOException
Flushes the in-memory buffer to the given output, copying at mostnumBytes.NOTE: this method does not refill the buffer, however it does advance the buffer position.
- Returns:
- the number of bytes actually flushed from the in-memory buffer.
- Throws:
IOException
-
bufferSize
public static int bufferSize(IOContext context)
Returns default buffer sizes for the givenIOContext
-
wrap
public static BufferedIndexInput wrap(String sliceDescription, IndexInput other, long offset, long length)
Wraps a portion of another IndexInput with buffering.Please note: This is in most cases ineffective, because it may double buffer!
-
-