org.apache.lucene.store
Class BufferedIndexInput

java.lang.Object
  extended by org.apache.lucene.store.DataInput
      extended by org.apache.lucene.store.IndexInput
          extended by org.apache.lucene.store.BufferedIndexInput
All Implemented Interfaces:
Closeable, Cloneable
Direct Known Subclasses:
FSDirectory.FSIndexInput

public abstract class BufferedIndexInput
extends IndexInput

Base implementation class for buffered IndexInput.


Field Summary
protected  byte[] buffer
           
static int BUFFER_SIZE
          Default buffer size set to 1024.
static int MERGE_BUFFER_SIZE
          A buffer size for merges set to 4096.
 
Constructor Summary
BufferedIndexInput(String resourceDesc)
           
BufferedIndexInput(String resourceDesc, int bufferSize)
          Inits BufferedIndexInput with a specific bufferSize
BufferedIndexInput(String resourceDesc, IOContext context)
           
 
Method Summary
static int bufferSize(IOContext context)
          Returns default buffer sizes for the given IOContext
 BufferedIndexInput clone()
          Returns a clone of this stream.
protected  int flushBuffer(IndexOutput out, long numBytes)
          Flushes the in-memory buffer to the given output, copying at most numBytes.
 int getBufferSize()
          Returns buffer size.
 long getFilePointer()
          Returns the current position in this file, where the next read will occur.
protected  void newBuffer(byte[] newBuffer)
           
 byte readByte()
          Reads and returns a single byte.
 void readBytes(byte[] b, int offset, int len)
          Reads a specified number of bytes into an array at the specified offset.
 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).
 int readInt()
          Reads four bytes and returns an int.
protected abstract  void readInternal(byte[] b, int offset, int length)
          Expert: implements buffer refill.
 long readLong()
          Reads eight bytes and returns a long.
 short readShort()
          Reads two bytes and returns a short.
 int readVInt()
          Reads an int stored in variable-length format.
 long readVLong()
          Reads a long stored in variable-length format.
 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.
 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 Detail

BUFFER_SIZE

public static final int BUFFER_SIZE
Default buffer size set to 1024.

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
Constructor Detail

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 Detail

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:
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 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:
DataOutput.writeBytes(byte[],int)

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:
DataOutput.writeBytes(byte[],int)

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:
DataOutput.writeByte(byte)

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:
DataOutput.writeInt(int)

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:
DataOutput.writeLong(long)

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:
DataOutput.writeVInt(int)

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:
DataOutput.writeVLong(long)

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:
IndexInput.seek(long)

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:
IndexInput.getFilePointer()

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:
readInternal(byte[],int,int)

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



Copyright © 2000-2014 Apache Software Foundation. All Rights Reserved.