Module io.jooby

Class DataBufferWrapper

java.lang.Object
io.jooby.buffer.DataBufferWrapper
All Implemented Interfaces:
DataBuffer

public class DataBufferWrapper extends Object implements DataBuffer
Provides a convenient implementation of the DataBuffer interface that can be overridden to adapt the delegate.

These methods default to calling through to the wrapped delegate object.

Since:
5.2
Author:
Arjen Poutsma
  • Constructor Details

    • DataBufferWrapper

      public DataBufferWrapper(DataBuffer delegate)
      Create a new DataBufferWrapper that wraps the given buffer.
      Parameters:
      delegate - the buffer to wrap
  • Method Details

    • dataBuffer

      public DataBuffer dataBuffer()
      Return the wrapped delegate.
    • factory

      public DataBufferFactory factory()
      Description copied from interface: DataBuffer
      Return the DataBufferFactory that created this buffer.
      Specified by:
      factory in interface DataBuffer
      Returns:
      the creating buffer factory
    • indexOf

      public int indexOf(IntPredicate predicate, int fromIndex)
      Description copied from interface: DataBuffer
      Return the index of the first byte in this buffer that matches the given predicate.
      Specified by:
      indexOf in interface DataBuffer
      Parameters:
      predicate - the predicate to match
      fromIndex - the index to start the search from
      Returns:
      the index of the first byte that matches predicate; or -1 if none match
    • lastIndexOf

      public int lastIndexOf(IntPredicate predicate, int fromIndex)
      Description copied from interface: DataBuffer
      Return the index of the last byte in this buffer that matches the given predicate.
      Specified by:
      lastIndexOf in interface DataBuffer
      Parameters:
      predicate - the predicate to match
      fromIndex - the index to start the search from
      Returns:
      the index of the last byte that matches predicate; or -1 if none match
    • readableByteCount

      public int readableByteCount()
      Description copied from interface: DataBuffer
      Return the number of bytes that can be read from this data buffer.
      Specified by:
      readableByteCount in interface DataBuffer
      Returns:
      the readable byte count
    • writableByteCount

      public int writableByteCount()
      Description copied from interface: DataBuffer
      Return the number of bytes that can be written to this data buffer.
      Specified by:
      writableByteCount in interface DataBuffer
      Returns:
      the writable byte count
    • capacity

      public int capacity()
      Description copied from interface: DataBuffer
      Return the number of bytes that this buffer can contain.
      Specified by:
      capacity in interface DataBuffer
      Returns:
      the capacity
    • duplicate

      public DataBuffer duplicate()
      Specified by:
      duplicate in interface DataBuffer
    • ensureWritable

      public DataBuffer ensureWritable(int capacity)
      Description copied from interface: DataBuffer
      Ensure that the current buffer has enough DataBuffer.writableByteCount() to write the amount of data given as an argument. If not, the missing capacity will be added to the buffer.
      Specified by:
      ensureWritable in interface DataBuffer
      Parameters:
      capacity - the writable capacity to check for
      Returns:
      this buffer
    • readPosition

      public int readPosition()
      Description copied from interface: DataBuffer
      Return the position from which this buffer will read.
      Specified by:
      readPosition in interface DataBuffer
      Returns:
      the read position
    • readPosition

      public DataBuffer readPosition(int readPosition)
      Description copied from interface: DataBuffer
      Set the position from which this buffer will read.
      Specified by:
      readPosition in interface DataBuffer
      Parameters:
      readPosition - the new read position
      Returns:
      this buffer
    • writePosition

      public int writePosition()
      Description copied from interface: DataBuffer
      Return the position to which this buffer will write.
      Specified by:
      writePosition in interface DataBuffer
      Returns:
      the write position
    • writePosition

      public DataBuffer writePosition(int writePosition)
      Description copied from interface: DataBuffer
      Set the position to which this buffer will write.
      Specified by:
      writePosition in interface DataBuffer
      Parameters:
      writePosition - the new write position
      Returns:
      this buffer
    • getByte

      public byte getByte(int index)
      Description copied from interface: DataBuffer
      Read a single byte at the given index from this data buffer.
      Specified by:
      getByte in interface DataBuffer
      Parameters:
      index - the index at which the byte will be read
      Returns:
      the byte at the given index
    • read

      public byte read()
      Description copied from interface: DataBuffer
      Read a single byte from the current reading position from this data buffer.
      Specified by:
      read in interface DataBuffer
      Returns:
      the byte at this buffer's current reading position
    • read

      public DataBuffer read(byte[] destination)
      Description copied from interface: DataBuffer
      Read this buffer's data into the specified destination, starting at the current reading position of this buffer.
      Specified by:
      read in interface DataBuffer
      Parameters:
      destination - the array into which the bytes are to be written
      Returns:
      this buffer
    • read

      public DataBuffer read(byte[] destination, int offset, int length)
      Description copied from interface: DataBuffer
      Read at most length bytes of this buffer into the specified destination, starting at the current reading position of this buffer.
      Specified by:
      read in interface DataBuffer
      Parameters:
      destination - the array into which the bytes are to be written
      offset - the index within destination of the first byte to be written
      length - the maximum number of bytes to be written in destination
      Returns:
      this buffer
    • write

      public DataBuffer write(byte b)
      Description copied from interface: DataBuffer
      Write a single byte into this buffer at the current writing position.
      Specified by:
      write in interface DataBuffer
      Parameters:
      b - the byte to be written
      Returns:
      this buffer
    • write

      public DataBuffer write(byte[] source)
      Description copied from interface: DataBuffer
      Write the given source into this buffer, starting at the current writing position of this buffer.
      Specified by:
      write in interface DataBuffer
      Parameters:
      source - the bytes to be written into this buffer
      Returns:
      this buffer
    • write

      public DataBuffer write(byte[] source, int offset, int length)
      Description copied from interface: DataBuffer
      Write at most length bytes of the given source into this buffer, starting at the current writing position of this buffer.
      Specified by:
      write in interface DataBuffer
      Parameters:
      source - the bytes to be written into this buffer
      offset - the index within source to start writing from
      length - the maximum number of bytes to be written from source
      Returns:
      this buffer
    • write

      public DataBuffer write(DataBuffer... buffers)
      Description copied from interface: DataBuffer
      Write one or more DataBuffers to this buffer, starting at the current writing position. It is the responsibility of the caller to release the given data buffers.
      Specified by:
      write in interface DataBuffer
      Parameters:
      buffers - the byte buffers to write into this buffer
      Returns:
      this buffer
    • write

      public DataBuffer write(ByteBuffer... buffers)
      Description copied from interface: DataBuffer
      Write one or more ByteBuffer to this buffer, starting at the current writing position.
      Specified by:
      write in interface DataBuffer
      Parameters:
      buffers - the byte buffers to write into this buffer
      Returns:
      this buffer
    • write

      public DataBuffer write(CharSequence charSequence, Charset charset)
      Description copied from interface: DataBuffer
      Write the given CharSequence using the given Charset, starting at the current writing position.
      Specified by:
      write in interface DataBuffer
      Parameters:
      charSequence - the char sequence to write into this buffer
      charset - the charset to encode the char sequence with
      Returns:
      this buffer
    • split

      public DataBuffer split(int index)
      Description copied from interface: DataBuffer
      Splits this data buffer into two at the given index.

      Data that precedes the index will be returned in a new buffer, while this buffer will contain data that follows after index. Memory between the two buffers is shared.

      The read and write position of the returned buffer are truncated to fit within the buffers capacity if necessary. The positions of this buffer are set to 0 if they are smaller than index.

      Specified by:
      split in interface DataBuffer
      Parameters:
      index - the index at which it should be split
      Returns:
      a new data buffer, containing the bytes from index 0 to index
    • toByteBuffer

      public void toByteBuffer(ByteBuffer dest)
      Description copied from interface: DataBuffer
      Copies this entire data buffer into the given destination ByteBuffer, beginning at the current reading position, and the current position of destination byte buffer.
      Specified by:
      toByteBuffer in interface DataBuffer
      Parameters:
      dest - the destination byte buffer
    • toByteBuffer

      public void toByteBuffer(int srcPos, ByteBuffer dest, int destPos, int length)
      Description copied from interface: DataBuffer
      Copies the given length from this data buffer into the given destination ByteBuffer, beginning at the given source position, and the given destination position in the destination byte buffer.
      Specified by:
      toByteBuffer in interface DataBuffer
      Parameters:
      srcPos - the position of this data buffer from where copying should start
      dest - the destination byte buffer
      destPos - the position in dest to where copying should start
      length - the amount of data to copy
    • readableByteBuffers

      public DataBuffer.ByteBufferIterator readableByteBuffers()
      Description copied from interface: DataBuffer
      Returns a closeable iterator over each ByteBuffer in this data buffer that can be read. However, the byte buffers provided can only be used during the iteration.

      Note that the returned iterator must be used in a try-with-resources clause or explicitly closed.

      Specified by:
      readableByteBuffers in interface DataBuffer
      Returns:
      a closeable iterator over the readable byte buffers contained in this data buffer
    • writableByteBuffers

      public DataBuffer.ByteBufferIterator writableByteBuffers()
      Description copied from interface: DataBuffer
      Returns a closeable iterator over each ByteBuffer in this data buffer that can be written to. The byte buffers provided can only be used during the iteration.

      Note that the returned iterator must be used in a try-with-resources clause or explicitly closed.

      Specified by:
      writableByteBuffers in interface DataBuffer
      Returns:
      a closeable iterator over the writable byte buffers contained in this data buffer
    • asInputStream

      public InputStream asInputStream()
      Description copied from interface: DataBuffer
      Expose this buffer's data as an InputStream. Both data and read position are shared between the returned stream and this data buffer. The underlying buffer will not be released when the input stream is closed.
      Specified by:
      asInputStream in interface DataBuffer
      Returns:
      this data buffer as an input stream
      See Also:
    • asInputStream

      public InputStream asInputStream(boolean releaseOnClose)
      Description copied from interface: DataBuffer
      Expose this buffer's data as an InputStream. Both data and read position are shared between the returned stream and this data buffer.
      Specified by:
      asInputStream in interface DataBuffer
      Parameters:
      releaseOnClose - whether the underlying buffer will be released when the input stream is closed.
      Returns:
      this data buffer as an input stream
    • asOutputStream

      public OutputStream asOutputStream()
      Description copied from interface: DataBuffer
      Expose this buffer's data as an OutputStream. Both data and write position are shared between the returned stream and this data buffer.
      Specified by:
      asOutputStream in interface DataBuffer
      Returns:
      this data buffer as an output stream
    • toString

      public String toString(Charset charset)
      Description copied from interface: DataBuffer
      Return this buffer's data a String using the specified charset. Default implementation delegates to toString(readPosition(), readableByteCount(), charset).
      Specified by:
      toString in interface DataBuffer
      Parameters:
      charset - the character set to use
      Returns:
      a string representation of all this buffers data
    • clear

      public DataBuffer clear()
      Description copied from interface: DataBuffer
      Clears this buffer. The position is set to zero, the limit is set to the capacity, and the mark is discarded.

      This method does not actually erase the data in the buffer, but it is named as if it did because it will most often be used in situations in which that might as well be the case.

      Specified by:
      clear in interface DataBuffer
      Returns:
      This buffer
    • toString

      public String toString(int index, int length, Charset charset)
      Description copied from interface: DataBuffer
      Return a part of this buffer's data as a String using the specified charset.
      Specified by:
      toString in interface DataBuffer
      Parameters:
      index - the index at which to start the string
      length - the number of bytes to use for the string
      charset - the charset to use
      Returns:
      a string representation of a part of this buffers data