Class ByteBufferIndexInput

  • All Implemented Interfaces:
    java.io.Closeable, java.lang.AutoCloseable, java.lang.Cloneable, RandomAccessInput
    Direct Known Subclasses:
    ByteBufferIndexInput.MultiBufferImpl, ByteBufferIndexInput.SingleBufferImpl

    @Deprecated
    public abstract class ByteBufferIndexInput
    extends IndexInput
    implements RandomAccessInput
    Deprecated.
    This class was made public for internal reasons (instanceof checks). In MMapDirectory it was replaced by MemorySegment based IndexInput implementations and will be no longer required in Lucene 10.
    Base IndexInput implementation that uses an array of ByteBuffers to represent a file.

    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 ).

    • Nested Class Summary

      Nested Classes 
      Modifier and Type Class Description
      (package private) static class  ByteBufferIndexInput.MultiBufferImpl
      Deprecated.
      This class adds offset support to ByteBufferIndexInput, which is needed for slices.
      (package private) static class  ByteBufferIndexInput.SingleBufferImpl
      Deprecated.
      Optimization of ByteBufferIndexInput for when there is only one buffer
    • Constructor Summary

      Constructors 
      Constructor Description
      ByteBufferIndexInput​(java.lang.String resourceDescription, java.nio.ByteBuffer[] buffers, long length, int chunkSizePower, ByteBufferGuard guard)
      Deprecated.
       
    • Method Summary

      All Methods Static Methods Instance Methods Concrete Methods Deprecated Methods 
      Modifier and Type Method Description
      (package private) AlreadyClosedException alreadyClosed​(java.lang.NullPointerException npe)
      Deprecated.
       
      protected ByteBufferIndexInput buildSlice​(java.lang.String sliceDescription, long offset, long length)
      Deprecated.
      Builds the actual sliced IndexInput (may apply extra offset in subclasses).
      private java.nio.ByteBuffer[] buildSlice​(java.nio.ByteBuffer[] buffers, long offset, long length)
      Deprecated.
      Returns a sliced view from a set of already-existing buffers: the last buffer's limit() will be correct, but you must deal with offset separately (the first buffer will not be adjusted)
      ByteBufferIndexInput clone()
      Deprecated.
      Returns a clone of this stream.
      void close()
      Deprecated.
      Closes the stream to further operations.
      long getFilePointer()
      Deprecated.
      Returns the current position in this file, where the next read will occur.
      (package private) java.lang.RuntimeException handlePositionalIOOBE​(java.lang.RuntimeException unused, java.lang.String action, long pos)
      Deprecated.
       
      long length()
      Deprecated.
      The number of bytes in the file.
      protected ByteBufferIndexInput newCloneInstance​(java.lang.String newResourceDescription, java.nio.ByteBuffer[] newBuffers, int offset, long length)
      Deprecated.
      Factory method that creates a suitable implementation of this class for the given ByteBuffers.
      static ByteBufferIndexInput newInstance​(java.lang.String resourceDescription, java.nio.ByteBuffer[] buffers, long length, int chunkSizePower, ByteBufferGuard guard)
      Deprecated.
       
      byte readByte()
      Deprecated.
      Reads and returns a single byte.
      byte readByte​(long pos)
      Deprecated.
      Reads a byte at the given position in the file
      void readBytes​(byte[] b, int offset, int len)
      Deprecated.
      Reads a specified number of bytes into an array at the specified offset.
      void readFloats​(float[] floats, int offset, int len)
      Deprecated.
      Reads a specified number of floats into an array at the specified offset.
      int readInt()
      Deprecated.
      Reads four bytes and returns an int (LE byte order).
      int readInt​(long pos)
      Deprecated.
      Reads an integer (LE byte order) at the given position in the file
      void readInts​(int[] dst, int offset, int length)
      Deprecated.
      Reads a specified number of ints into an array at the specified offset.
      long readLong()
      Deprecated.
      Reads eight bytes and returns a long (LE byte order).
      long readLong​(long pos)
      Deprecated.
      Reads a long (LE byte order) at the given position in the file
      void readLongs​(long[] dst, int offset, int length)
      Deprecated.
      Read a specified number of longs.
      short readShort()
      Deprecated.
      Reads two bytes and returns a short (LE byte order).
      short readShort​(long pos)
      Deprecated.
      Reads a short (LE byte order) at the given position in the file
      int readVInt()
      Deprecated.
      Reads an int stored in variable-length format.
      long readVLong()
      Deprecated.
      Reads a long stored in variable-length format.
      void seek​(long pos)
      Deprecated.
      Sets current position in this file, where the next read will occur.
      protected void setCurBuf​(java.nio.ByteBuffer curBuf)
      Deprecated.
       
      private void setPos​(long pos, int bi)
      Deprecated.
       
      ByteBufferIndexInput slice​(java.lang.String sliceDescription, long offset, long length)
      Deprecated.
      Creates a slice of this index input, with the given description, offset, and length.
      private void unsetBuffers()
      Deprecated.
      Called to remove all references to byte buffers, so we can throw AlreadyClosed on NPE.
      • Methods inherited from class java.lang.Object

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

      • EMPTY_FLOATBUFFER

        private static final java.nio.FloatBuffer EMPTY_FLOATBUFFER
        Deprecated.
      • EMPTY_LONGBUFFER

        private static final java.nio.LongBuffer EMPTY_LONGBUFFER
        Deprecated.
      • EMPTY_INTBUFFER

        private static final java.nio.IntBuffer EMPTY_INTBUFFER
        Deprecated.
      • length

        protected final long length
        Deprecated.
      • chunkSizeMask

        protected final long chunkSizeMask
        Deprecated.
      • chunkSizePower

        protected final int chunkSizePower
        Deprecated.
      • buffers

        protected java.nio.ByteBuffer[] buffers
        Deprecated.
      • curBufIndex

        protected int curBufIndex
        Deprecated.
      • curBuf

        protected java.nio.ByteBuffer curBuf
        Deprecated.
      • curLongBufferViews

        private java.nio.LongBuffer[] curLongBufferViews
        Deprecated.
      • curIntBufferViews

        private java.nio.IntBuffer[] curIntBufferViews
        Deprecated.
      • curFloatBufferViews

        private java.nio.FloatBuffer[] curFloatBufferViews
        Deprecated.
      • isClone

        protected boolean isClone
        Deprecated.
    • Constructor Detail

      • ByteBufferIndexInput

        ByteBufferIndexInput​(java.lang.String resourceDescription,
                             java.nio.ByteBuffer[] buffers,
                             long length,
                             int chunkSizePower,
                             ByteBufferGuard guard)
        Deprecated.
    • Method Detail

      • newInstance

        public static ByteBufferIndexInput newInstance​(java.lang.String resourceDescription,
                                                       java.nio.ByteBuffer[] buffers,
                                                       long length,
                                                       int chunkSizePower,
                                                       ByteBufferGuard guard)
        Deprecated.
      • setCurBuf

        protected void setCurBuf​(java.nio.ByteBuffer curBuf)
        Deprecated.
      • handlePositionalIOOBE

        java.lang.RuntimeException handlePositionalIOOBE​(java.lang.RuntimeException unused,
                                                         java.lang.String action,
                                                         long pos)
                                                  throws java.io.IOException
        Deprecated.
        Throws:
        java.io.IOException
      • readByte

        public final byte readByte()
                            throws java.io.IOException
        Deprecated.
        Description copied from class: DataInput
        Reads and returns a single byte.
        Specified by:
        readByte in class DataInput
        Throws:
        java.io.IOException
        See Also:
        DataOutput.writeByte(byte)
      • readBytes

        public final void readBytes​(byte[] b,
                                    int offset,
                                    int len)
                             throws java.io.IOException
        Deprecated.
        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:
        java.io.IOException
        See Also:
        DataOutput.writeBytes(byte[],int)
      • readLongs

        public final void readLongs​(long[] dst,
                                    int offset,
                                    int length)
                             throws java.io.IOException
        Deprecated.
        Description copied from class: DataInput
        Read a specified number of longs.
        Overrides:
        readLongs in class DataInput
        Throws:
        java.io.IOException
      • readInts

        public void readInts​(int[] dst,
                             int offset,
                             int length)
                      throws java.io.IOException
        Deprecated.
        Description copied from class: DataInput
        Reads a specified number of ints into an array at the specified offset.
        Overrides:
        readInts in class DataInput
        Parameters:
        dst - the array to read bytes into
        offset - the offset in the array to start storing ints
        length - the number of ints to read
        Throws:
        java.io.IOException
      • readFloats

        public final void readFloats​(float[] floats,
                                     int offset,
                                     int len)
                              throws java.io.IOException
        Deprecated.
        Description copied from class: DataInput
        Reads a specified number of floats into an array at the specified offset.
        Overrides:
        readFloats in class DataInput
        Parameters:
        floats - the array to read bytes into
        offset - the offset in the array to start storing floats
        len - the number of floats to read
        Throws:
        java.io.IOException
      • readVInt

        public final int readVInt()
                           throws java.io.IOException
        Deprecated.
        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 supported, but should be avoided.

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

        Overrides:
        readVInt in class DataInput
        Throws:
        java.io.IOException
        See Also:
        DataOutput.writeVInt(int)
      • readVLong

        public final long readVLong()
                             throws java.io.IOException
        Deprecated.
        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:
        java.io.IOException
        See Also:
        DataOutput.writeVLong(long)
      • seek

        public void seek​(long pos)
                  throws java.io.IOException
        Deprecated.
        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 throw EOFException and then the stream is in an undetermined state.
        Specified by:
        seek in class IndexInput
        Throws:
        java.io.IOException
        See Also:
        IndexInput.getFilePointer()
      • setPos

        private void setPos​(long pos,
                            int bi)
                     throws java.io.IOException
        Deprecated.
        Throws:
        java.io.IOException
      • clone

        public final ByteBufferIndexInput clone()
        Deprecated.
        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 call IndexInput.close() on the original object.

        If you access the cloned IndexInput after closing the original object, any readXXX methods will throw AlreadyClosedException.

        This method is NOT thread safe, so if the current IndexInput is being used by one thread while clone is called by another, disaster could strike.

        Overrides:
        clone in class IndexInput
      • slice

        public final ByteBufferIndexInput slice​(java.lang.String sliceDescription,
                                                long offset,
                                                long length)
        Deprecated.
        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 class IndexInput
      • buildSlice

        protected ByteBufferIndexInput buildSlice​(java.lang.String sliceDescription,
                                                  long offset,
                                                  long length)
        Deprecated.
        Builds the actual sliced IndexInput (may apply extra offset in subclasses). *
      • newCloneInstance

        protected ByteBufferIndexInput newCloneInstance​(java.lang.String newResourceDescription,
                                                        java.nio.ByteBuffer[] newBuffers,
                                                        int offset,
                                                        long length)
        Deprecated.
        Factory method that creates a suitable implementation of this class for the given ByteBuffers.
      • buildSlice

        private java.nio.ByteBuffer[] buildSlice​(java.nio.ByteBuffer[] buffers,
                                                 long offset,
                                                 long length)
        Deprecated.
        Returns a sliced view from a set of already-existing buffers: the last buffer's limit() will be correct, but you must deal with offset separately (the first buffer will not be adjusted)
      • close

        public final void close()
                         throws java.io.IOException
        Deprecated.
        Description copied from class: IndexInput
        Closes the stream to further operations.
        Specified by:
        close in interface java.lang.AutoCloseable
        Specified by:
        close in interface java.io.Closeable
        Specified by:
        close in class IndexInput
        Throws:
        java.io.IOException
      • unsetBuffers

        private void unsetBuffers()
        Deprecated.
        Called to remove all references to byte buffers, so we can throw AlreadyClosed on NPE.