Class CompositeByteArrayRelativeReader

  • All Implemented Interfaces:
    IoRelativeReader

    public class CompositeByteArrayRelativeReader
    extends Object
    implements IoRelativeReader
    Provides restricted, relative, read-only access to the bytes in a CompositeByteArray. Using this interface has the advantage that it can be automatically determined when a component ByteArray can no longer be read, and thus components can be automatically freed. This makes it easier to use pooling for underlying ByteArrays.
    Author:
    Apache MINA Project
    • Field Detail

      • cursor

        protected final ByteArray.Cursor cursor
        A cursor of the underlying CompositeByteArray. This cursor is never moved directly; its position only changes through calls to relative read or write methods.
    • Constructor Detail

      • CompositeByteArrayRelativeReader

        public CompositeByteArrayRelativeReader​(CompositeByteArray cba,
                                                boolean autoFree)
        Creates a new instance of CompositeByteArrayRelativeReader.
        Parameters:
        cba - The backing ByteArray
        autoFree - If data should be freed once it has been passed in the list
    • Method Detail

      • cursorPassedFirstComponent

        protected void cursorPassedFirstComponent()
        Called whenever the cursor has passed from the cba's first component. As the first component is no longer used, this provides a good opportunity for subclasses to perform some action on it (such as freeing it).
      • skip

        public void skip​(int length)
        Advances the reader by the given number of bytes.
        Specified by:
        skip in interface IoRelativeReader
        Parameters:
        length - the number of bytes to skip
      • slice

        public ByteArray slice​(int length)
        Specified by:
        slice in interface IoRelativeReader
        Parameters:
        length - The number of bytes to get
        Returns:
        an array with a view of part of this array.
      • get

        public byte get()
        Specified by:
        get in interface IoRelativeReader
        Returns:
        the byte at the current position in the buffer
      • get

        public void get​(IoBuffer bb)
        places the data starting at current position into the supplied IoBuffer
        Specified by:
        get in interface IoRelativeReader
        Parameters:
        bb - The IoBuffer that will contain the read bytes
      • getShort

        public short getShort()
        Specified by:
        getShort in interface IoRelativeReader
        Returns:
        a short and advances the reader.
      • getInt

        public int getInt()
        Specified by:
        getInt in interface IoRelativeReader
        Returns:
        an int and advances the reader.
      • getLong

        public long getLong()
        Specified by:
        getLong in interface IoRelativeReader
        Returns:
        a long and advances the reader.
      • getFloat

        public float getFloat()
        Specified by:
        getFloat in interface IoRelativeReader
        Returns:
        a float and advances the reader.
      • getDouble

        public double getDouble()
        Specified by:
        getDouble in interface IoRelativeReader
        Returns:
        a double and advances the reader.
      • getChar

        public char getChar()
        Specified by:
        getChar in interface IoRelativeReader
        Returns:
        a char and advances the reader.
      • getRemaining

        public final int getRemaining()
        Returns:
        The number of remaining bytes
      • hasRemaining

        public final boolean hasRemaining()
        Returns:
        TRUE if there are some more bytes
      • order

        public ByteOrder order()
        Returns:
        The used byte order (little of big indian)
      • append

        public final void append​(ByteArray ba)
        Make a ByteArray available for access at the end of this object.
        Parameters:
        ba - The ByteArray to append
      • free

        public final void free()
        Free all resources associated with this object.
      • getIndex

        public final int getIndex()
        Returns:
        the index that will be used for the next access.
      • last

        public final int last()
        Returns:
        the index after the last byte that can be accessed.