org.apache.derby.iapi.services.io
Class LimitInputStream

java.lang.Object
  extended by java.io.InputStream
      extended by java.io.FilterInputStream
          extended by org.apache.derby.iapi.services.io.LimitInputStream
All Implemented Interfaces:
java.io.Closeable, Limit
Direct Known Subclasses:
RawToBinaryFormatStream

public class LimitInputStream
extends java.io.FilterInputStream
implements Limit

An abstract InputStream that provides abstract methods to limit the range that can be read from the stream.


Field Summary
protected  boolean limitInPlace
           
protected  int remainingBytes
           
 
Fields inherited from class java.io.FilterInputStream
in
 
Constructor Summary
LimitInputStream(java.io.InputStream in)
          Construct a LimitInputStream and call the clearLimit() method.
 
Method Summary
 int available()
           
 int clearLimit()
          Clear any limit set by setLimit.
 boolean markSupported()
          This stream doesn't support mark/reset, independent of whether the underlying stream does so or not.
 int read()
           
 int read(byte[] b, int off, int len)
           
 void setInput(java.io.InputStream in)
           
 void setLimit(int length)
          Set the limit of the stream that can be read.
 long skip(long count)
           
 
Methods inherited from class java.io.FilterInputStream
close, mark, read, reset
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

remainingBytes

protected int remainingBytes

limitInPlace

protected boolean limitInPlace
Constructor Detail

LimitInputStream

public LimitInputStream(java.io.InputStream in)
Construct a LimitInputStream and call the clearLimit() method.

Method Detail

read

public int read()
         throws java.io.IOException
Overrides:
read in class java.io.FilterInputStream
Throws:
java.io.IOException

read

public int read(byte[] b,
                int off,
                int len)
         throws java.io.IOException
Overrides:
read in class java.io.FilterInputStream
Throws:
java.io.IOException

skip

public long skip(long count)
          throws java.io.IOException
Overrides:
skip in class java.io.FilterInputStream
Throws:
java.io.IOException

available

public int available()
              throws java.io.IOException
Overrides:
available in class java.io.FilterInputStream
Throws:
java.io.IOException

setLimit

public void setLimit(int length)
Set the limit of the stream that can be read. After this call up to and including length bytes can be read from or skipped in the stream. Any attempt to read more than length bytes will result in an EOFException

Specified by:
setLimit in interface Limit
Throws:
java.io.IOException - IOException from some underlying stream
EOFException - The set limit would exceed the available data in the stream.

clearLimit

public int clearLimit()
Clear any limit set by setLimit. After this call no limit checking will be made on any read until a setLimit()) call is made.

Specified by:
clearLimit in interface Limit
Returns:
the number of bytes within the limit that have not been read. -1 if no limit was set.

setInput

public void setInput(java.io.InputStream in)

markSupported

public boolean markSupported()
This stream doesn't support mark/reset, independent of whether the underlying stream does so or not.

The reason for not supporting mark/reset, is that it is hard to combine with the limit functionality without always keeping track of the number of bytes read.

Overrides:
markSupported in class java.io.FilterInputStream
Returns:
false

Built on Thu 2011-03-10 11:54:14+0000, from revision ???

Apache Derby V10.6 Internals - Copyright © 2004,2007 The Apache Software Foundation. All Rights Reserved.