org.apache.derby.impl.store.raw.data
Class RememberBytesInputStream

java.lang.Object
  extended byjava.io.InputStream
      extended byjava.io.FilterInputStream
          extended byorg.apache.derby.impl.store.raw.data.RememberBytesInputStream

public class RememberBytesInputStream
extends java.io.FilterInputStream

A FilterInputStream that remembers read or skipped bytes.

In record mode this stream remembers all the bytes a caller reads or skips. After reading some bytes this returns a 'replay' stream to re-read them.

A caller may call getReplaySteam to get a stream to re-read the the remembered bytes. Any number of calls to getReplayStream are supported.

The clear function causes this stream to forget the remembered bytes and re-enter record mode.


Field Summary
(package private)  ByteHolder bh
           
(package private)  boolean recording
           
 
Fields inherited from class java.io.FilterInputStream
in
 
Fields inherited from class java.io.InputStream
 
Constructor Summary
RememberBytesInputStream(java.io.InputStream in, ByteHolder bh)
          Construct a RememberBytesInputStream.
 
Method Summary
 int available()
          Return the number of bytes remains in the byteHolder for reading, without setting the write/read mode.
 void clear()
          Clear all the remembered bytes.
 long fillBuf(int len)
          read len bytes from the input stream, and store it in the byte holder.
 ByteHolder getByteHolder()
          Get the byteHolder.
 java.io.InputStream getReplayStream()
          Get an input stream for re-reading the remembered bytes.
 int numBytesSaved()
          Return the number of bytes that have been saved to this byte holder.
 int putBuf(java.io.OutputStream out, int len)
          read len bytes from the byte holder, and write it to the output stream.
 int read()
           
 int read(byte[] b, int off, int len)
           
 boolean recording()
          Return true iff this RememberBytesInputStream is in recording mode.
 void setInput(java.io.InputStream in)
          Set the InputStream from which this reads.
 int shiftToFront()
          remove the remaining bytes in the byteHolder to the beginning set the position to start recording just after these bytes.
 long skip(long count)
           
 java.lang.String toString()
           
 
Methods inherited from class java.io.FilterInputStream
close, mark, markSupported, read, reset
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

bh

ByteHolder bh

recording

boolean recording
Constructor Detail

RememberBytesInputStream

public RememberBytesInputStream(java.io.InputStream in,
                                ByteHolder bh)
Construct a RememberBytesInputStream.

Parameters:
bh - for storing the remembered bytes. (must be in writing mode.
Method Detail

read

public int read()
         throws java.io.IOException
Throws:
java.io.IOException - thrown on an io error spooling rememberd bytes to backing storage.
See Also:
InputStream.read()

read

public int read(byte[] b,
                int off,
                int len)
         throws java.io.IOException
Throws:
java.io.IOException - thrown on an io error spooling rememberd bytes to backing storage.
See Also:
InputStream.read()

fillBuf

public long fillBuf(int len)
             throws java.io.IOException
read len bytes from the input stream, and store it in the byte holder.

Throws:
java.io.IOException - thrown on an io error spooling rememberd bytes to backing storage.

putBuf

public int putBuf(java.io.OutputStream out,
                  int len)
           throws java.io.IOException
read len bytes from the byte holder, and write it to the output stream.

Throws:
java.io.IOException - thrown on an io error spooling rememberd bytes to backing storage.

skip

public long skip(long count)
          throws java.io.IOException
Throws:
java.io.IOException - thrown on an io error spooling rememberd bytes to backing storage.
See Also:
InputStream.skip(long)

getReplayStream

public java.io.InputStream getReplayStream()
                                    throws java.io.IOException
Get an input stream for re-reading the remembered bytes.

Throws:
java.io.IOException

getByteHolder

public ByteHolder getByteHolder()
                         throws java.io.IOException
Get the byteHolder.

Throws:
java.io.IOException

clear

public void clear()
           throws java.io.IOException
Clear all the remembered bytes. This stream will remember any bytes read after this call.

Throws:
java.io.IOException - thrown on an io error clearing backing storage.

setInput

public void setInput(java.io.InputStream in)
Set the InputStream from which this reads.

Please note this does not clear remembered bytes.


recording

public boolean recording()
Return true iff this RememberBytesInputStream is in recording mode.


available

public int available()
              throws java.io.IOException
Return the number of bytes remains in the byteHolder for reading, without setting the write/read mode.

Throws:
java.io.IOException

numBytesSaved

public int numBytesSaved()
                  throws java.io.IOException
Return the number of bytes that have been saved to this byte holder. This result is different from available() as it is unaffected by the current read position on the ByteHolder.

Throws:
java.io.IOException

shiftToFront

public int shiftToFront()
                 throws java.io.IOException
remove the remaining bytes in the byteHolder to the beginning set the position to start recording just after these bytes. returns how many bytes was transfered to the beginning.

Throws:
java.io.IOException

toString

public java.lang.String toString()
See Also:
Object.toString()

Built on Tue 2006-10-10 19:23:47+0200, from revision exported

Apache Derby V10.1 Engine Documentation - Copyright © 1997,2005 The Apache Software Foundation or its licensors, as applicable.