com.sshtools.j2ssh.io
Class DynamicBuffer

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

public class DynamicBuffer
extends java.lang.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
protected  byte[] buf
          The buffer
protected static int DEFAULT_BUFFER_SIZE
          Buffer size when the dynamic buffer is opened
protected  java.io.InputStream in
          This buffers InputStream
protected  java.io.OutputStream out
          This buffers OutputStream
protected  int readpos
          The current read position
protected  int writepos
          The current write position
 
Constructor Summary
DynamicBuffer()
          Creates a new DynamicBuffer object.
 
Method Summary
protected  int available()
          Return the number of bytes of data available to be read from the buffer
 void close()
          Closes the buffer
protected  void flush()
          Flush data
 java.io.InputStream getInputStream()
          Get the InputStream of this buffer.
 java.io.OutputStream getOutputStream()
          Get the OutputStream of the buffer.
protected  int read()
          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 Detail

DEFAULT_BUFFER_SIZE

protected static final int DEFAULT_BUFFER_SIZE
Buffer size when the dynamic buffer is opened

See Also:
Constant Field Values

buf

protected byte[] buf
The buffer


writepos

protected int writepos
The current write position


readpos

protected int readpos
The current read position


in

protected java.io.InputStream in
This buffers InputStream


out

protected java.io.OutputStream out
This buffers OutputStream

Constructor Detail

DynamicBuffer

public DynamicBuffer()
Creates a new DynamicBuffer object.

Method Detail

getInputStream

public java.io.InputStream getInputStream()
Get the InputStream of this buffer. Use the stream to read data from this buffer.

Returns:

getOutputStream

public java.io.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 java.io.IOException
Write a byte array to the buffer

Parameters:
b -
Throws:
java.io.IOException

write

protected void write(byte[] data,
                     int offset,
                     int len)
              throws java.io.IOException
Parameters:
data -
offset -
len -
Throws:
java.io.IOException

setBlockInterrupt

public void setBlockInterrupt(int interrupt)

read

protected int read()
            throws java.io.IOException
Read a byte from the buffer

Returns:
Throws:
java.io.IOException
java.io.InterruptedIOException

read

protected int read(byte[] data,
                   int offset,
                   int len)
            throws java.io.IOException
Read a byte array from the buffer

Parameters:
data -
offset -
len -
Returns:
Throws:
java.io.IOException
java.io.InterruptedIOException

flush

protected void flush()
              throws java.io.IOException
Flush data

Throws:
java.io.IOException


Copyright © 2002-2003 Lee David Painter & Contributors. All Rights Reserved.