Class DynamicBuffer

java.lang.Object
com.sshtools.j2ssh.io.DynamicBuffer

public class DynamicBuffer extends Object

This class provides an alternative method of storing data, used within the API where Piped Streams could have been used. We found that Piped streams would lock if a thread attempted to read to data when the OutputStream attached was not being read; since we have no control over when the user will actually read the data, this behaviour led us to develop this dynamic buffer which will automatically grow if the buffer is full.

*
Version:
$Revision: 1.20 $
Author:
Lee David Painter
  • Field Summary

    Fields
    Modifier and Type
    Field
    Description
    protected byte[]
    The buffer
    protected static final int
    Buffer size when the dynamic buffer is opened
    protected InputStream
    This buffers InputStream
    protected OutputStream
    This buffers OutputStream
    protected int
    The current read position
    protected int
    The current write position
  • Constructor Summary

    Constructors
    Constructor
    Description
    Creates a new DynamicBuffer object.
  • Method Summary

    Modifier and Type
    Method
    Description
    protected int
    Return the number of bytes of data available to be read from the buffer
    void
    Closes the buffer
    protected void
    Flush data
    Get the InputStream of this buffer.
    Get the OutputStream of the buffer.
    protected int
    Read a byte from the buffer
    protected int
    read(byte[] data, int offset, int len)
    Read a byte array from the buffer
    void
    setBlockInterrupt(int interrupt)
     
    protected void
    write(byte[] data, int offset, int len)
     
    protected void
    write(int b)
    Write a byte array to the buffer

    Methods inherited from class java.lang.Object

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

    • DEFAULT_BUFFER_SIZE

      protected static final int DEFAULT_BUFFER_SIZE
      Buffer size when the dynamic buffer is opened
      See Also:
    • buf

      protected byte[] buf
      The buffer
    • writepos

      protected int writepos
      The current write position
    • readpos

      protected int readpos
      The current read position
    • in

      protected InputStream in
      This buffers InputStream
    • out

      protected OutputStream out
      This buffers OutputStream
  • Constructor Details

    • DynamicBuffer

      public DynamicBuffer()
      Creates a new DynamicBuffer object.
  • Method Details

    • getInputStream

      public InputStream getInputStream()
      Get the InputStream of this buffer. Use the stream to read data from this buffer.
      Returns:
    • getOutputStream

      public OutputStream getOutputStream()
      Get the OutputStream of the buffer. Use this stream to write data to the buffer.
      Returns:
    • available

      protected int available()
      Return the number of bytes of data available to be read from the buffer
      Returns:
    • close

      public void close()
      Closes the buffer
    • write

      protected void write(int b) throws IOException
      Write a byte array to the buffer
      Parameters:
      b -
      Throws:
      IOException
    • write

      protected void write(byte[] data, int offset, int len) throws IOException
      Parameters:
      data -
      offset -
      len -
      Throws:
      IOException
    • setBlockInterrupt

      public void setBlockInterrupt(int interrupt)
    • read

      protected int read() throws IOException
      Read a byte from the buffer
      Returns:
      Throws:
      IOException
      InterruptedIOException
    • read

      protected int read(byte[] data, int offset, int len) throws IOException
      Read a byte array from the buffer
      Parameters:
      data -
      offset -
      len -
      Returns:
      Throws:
      IOException
      InterruptedIOException
    • flush

      protected void flush() throws IOException
      Flush data
      Throws:
      IOException