Class BufferedIndexInput

All Implemented Interfaces:
Closeable, AutoCloseable, Cloneable
Direct Known Subclasses:
FSDirectory.FSIndexInput

public abstract class BufferedIndexInput extends IndexInput
Base implementation class for buffered IndexInput.
  • Field Summary

    Fields
    Modifier and Type
    Field
    Description
    protected byte[]
     
    static final int
    Default buffer size set to 1024.
    static final int
    A buffer size for merges set to 4096.
  • Constructor Summary

    Constructors
    Constructor
    Description
    BufferedIndexInput(String resourceDesc)
     
    BufferedIndexInput(String resourceDesc, int bufferSize)
    Inits BufferedIndexInput with a specific bufferSize
    BufferedIndexInput(String resourceDesc, IOContext context)
     
  • Method Summary

    Modifier and Type
    Method
    Description
    static int
    Returns default buffer sizes for the given IOContext
    Returns a clone of this stream.
    protected final int
    flushBuffer(IndexOutput out, long numBytes)
    Flushes the in-memory buffer to the given output, copying at most numBytes.
    final int
    Returns buffer size.
    final long
    Returns the current position in this file, where the next read will occur.
    protected void
    newBuffer(byte[] newBuffer)
     
    final byte
    Reads and returns a single byte.
    final void
    readBytes(byte[] b, int offset, int len)
    Reads a specified number of bytes into an array at the specified offset.
    final void
    readBytes(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).
    final int
    Reads four bytes and returns an int.
    protected abstract void
    readInternal(byte[] b, int offset, int length)
    Expert: implements buffer refill.
    final long
    Reads eight bytes and returns a long.
    final short
    Reads two bytes and returns a short.
    final int
    Reads an int stored in variable-length format.
    final long
    Reads a long stored in variable-length format.
    final void
    seek(long pos)
    Sets current position in this file, where the next read will occur.
    protected abstract void
    seekInternal(long pos)
    Expert: implements seek.
    final void
    setBufferSize(int newSize)
    Change the buffer size used by this IndexInput

    Methods inherited from class org.apache.lucene.store.IndexInput

    close, length, toString

    Methods inherited from class org.apache.lucene.store.DataInput

    readString, readStringSet, readStringStringMap

    Methods inherited from class java.lang.Object

    equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
  • Field Details

    • BUFFER_SIZE

      public static final int BUFFER_SIZE
      Default buffer size set to 1024.
      See Also:
    • MERGE_BUFFER_SIZE

      public static final int MERGE_BUFFER_SIZE
      A buffer size for merges set to 4096.
      See Also:
    • buffer

      protected byte[] buffer
  • Constructor Details

    • BufferedIndexInput

      public BufferedIndexInput(String resourceDesc)
    • BufferedIndexInput

      public BufferedIndexInput(String resourceDesc, IOContext context)
    • BufferedIndexInput

      public BufferedIndexInput(String resourceDesc, int bufferSize)
      Inits BufferedIndexInput with a specific bufferSize
  • Method Details

    • readByte

      public final byte readByte() throws IOException
      Description copied from class: DataInput
      Reads and returns a single byte.
      Specified by:
      readByte in class DataInput
      Throws:
      IOException
      See Also:
    • 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 IOException
      Description copied from class: DataInput
      Reads a specified number of bytes into an array at the specified offset.
      Specified by:
      readBytes in class DataInput
      Parameters:
      b - the array to read bytes into
      offset - the offset in the array to start storing bytes
      len - the number of bytes to read
      Throws:
      IOException
      See Also:
    • readBytes

      public final void readBytes(byte[] b, int offset, int len, boolean useBuffer) throws IOException
      Description copied from class: DataInput
      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). Currently only BufferedIndexInput respects this parameter.
      Overrides:
      readBytes in class DataInput
      Parameters:
      b - the array to read bytes into
      offset - the offset in the array to start storing bytes
      len - the number of bytes to read
      useBuffer - set to false if the caller will handle buffering.
      Throws:
      IOException
      See Also:
    • readShort

      public final short readShort() throws IOException
      Description copied from class: DataInput
      Reads two bytes and returns a short.
      Overrides:
      readShort in class DataInput
      Throws:
      IOException
      See Also:
    • readInt

      public final int readInt() throws IOException
      Description copied from class: DataInput
      Reads four bytes and returns an int.
      Overrides:
      readInt in class DataInput
      Throws:
      IOException
      See Also:
    • readLong

      public final long readLong() throws IOException
      Description copied from class: DataInput
      Reads eight bytes and returns a long.
      Overrides:
      readLong in class DataInput
      Throws:
      IOException
      See Also:
    • readVInt

      public final int readVInt() throws IOException
      Description copied from class: DataInput
      Reads an int stored in variable-length format. Reads between one and five bytes. Smaller values take fewer bytes. Negative numbers are not supported.

      The format is described further in DataOutput.writeVInt(int).

      Overrides:
      readVInt in class DataInput
      Throws:
      IOException
      See Also:
    • readVLong

      public final long readVLong() throws IOException
      Description copied from class: DataInput
      Reads 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:
      readVLong in class DataInput
      Throws:
      IOException
      See Also:
    • readInternal

      protected abstract void readInternal(byte[] b, int offset, int length) throws IOException
      Expert: implements buffer refill. Reads bytes from the current position in the input.
      Parameters:
      b - the array to read bytes into
      offset - the offset in the array to start storing bytes
      length - the number of bytes to read
      Throws:
      IOException
    • getFilePointer

      public final long getFilePointer()
      Description copied from class: IndexInput
      Returns the current position in this file, where the next read will occur.
      Specified by:
      getFilePointer in class IndexInput
      See Also:
    • seek

      public final void seek(long pos) throws IOException
      Description copied from class: IndexInput
      Sets current position in this file, where the next read will occur.
      Specified by:
      seek in class IndexInput
      Throws:
      IOException
      See Also:
    • seekInternal

      protected abstract void seekInternal(long pos) throws IOException
      Expert: implements seek. Sets current position in this file, where the next readInternal(byte[],int,int) will occur.
      Throws:
      IOException
      See Also:
    • clone

      public BufferedIndexInput 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 IndexInputs, it will only do this on the original one. The original instance must take care that cloned instances throw AlreadyClosedException when the original one is closed.

      Overrides:
      clone in class IndexInput
    • flushBuffer

      protected final int flushBuffer(IndexOutput out, long numBytes) throws IOException
      Flushes the in-memory buffer to the given output, copying at most numBytes.

      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 given IOContext