org.apache.catalina.connector
Class RequestStream

java.lang.Object
  |
  +--java.io.InputStream
        |
        +--javax.servlet.ServletInputStream
              |
              +--org.apache.catalina.connector.RequestStream
Direct Known Subclasses:
HttpRequestStream

public class RequestStream
extends javax.servlet.ServletInputStream

Convenience implementation of ServletInputStream that works with the standard implementations of Request. If the content length has been set on our associated Request, this implementation will enforce not reading more than that many bytes on the underlying stream.

Version:
$Revision: 1.3 $ $Date: 2000/10/28 01:39:44 $
Author:
Craig R. McClanahan

Field Summary
protected  byte[] buffer
          The input buffer for our stream.
protected static int BUFFER_SIZE
          The default buffer size for our input buffer.
protected  int bufferCount
          The current number of bytes in the buffer.
protected  int bufferPosition
          The current position in the buffer.
protected  boolean closed
          Has this stream been closed?
protected  int count
          The number of bytes which have already been returned by this stream.
protected  int length
          The content length past which we will not read, or -1 if there is no defined content length.
protected static StringManager sm
          The localized strings for this package.
protected  java.io.InputStream stream
          The underlying input stream from which we should read data.
 
Constructor Summary
RequestStream(Request request)
          Construct a servlet input stream associated with the specified Request.
 
Method Summary
 int available()
          Return the number of bytes that can be read (or skipped over) from this input stream without blocking by the next caller of a method on this input stream.
 void close()
          Close this input stream.
protected  int copyLine(byte[] source, int srcOff, byte[] dest, int destOff, int len)
          Copy up to a line of data from source to destination buffer.
protected  void fill()
          Refill the buffer from the underlying stream.
 int read()
          Read and return a single byte from this input stream, or -1 if end of file has been encountered.
 int read(byte[] b)
          Read some number of bytes from the input stream, and store them into the buffer array b.
 int read(byte[] b, int off, int len)
          Read up to len bytes of data from the input stream into an array of bytes.
 int readLine(byte[] b, int off, int len)
          Read into an array of bytes until all requested bytes have been read or a '\n' is encountered, in which case the '\n' is read into the array as well.
 long skip(long n)
          Skip the specified number of bytes of input, and return the actual number of bytes skipped.
 
Methods inherited from class java.io.InputStream
mark, markSupported, reset
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

BUFFER_SIZE

protected static final int BUFFER_SIZE
The default buffer size for our input buffer.

buffer

protected byte[] buffer
The input buffer for our stream.

bufferCount

protected int bufferCount
The current number of bytes in the buffer.

bufferPosition

protected int bufferPosition
The current position in the buffer.

closed

protected boolean closed
Has this stream been closed?

count

protected int count
The number of bytes which have already been returned by this stream.

length

protected int length
The content length past which we will not read, or -1 if there is no defined content length.

sm

protected static StringManager sm
The localized strings for this package.

stream

protected java.io.InputStream stream
The underlying input stream from which we should read data.
Constructor Detail

RequestStream

public RequestStream(Request request)
Construct a servlet input stream associated with the specified Request.
Parameters:
request - The associated request
Method Detail

available

public int available()
              throws java.io.IOException
Return the number of bytes that can be read (or skipped over) from this input stream without blocking by the next caller of a method on this input stream.
Overrides:
available in class java.io.InputStream
Throws:
java.io.IOException - if an input/output error occurs

close

public void close()
           throws java.io.IOException
Close this input stream. No physical level I-O is performed, but any further attempt to read from this stream will throw an IOException. If a content length has been set but not all of the bytes have yet been consumed, the remaining bytes will be swallowed.
Overrides:
close in class java.io.InputStream
Throws:
java.io.IOException - if an input/output error occurs

read

public int read()
         throws java.io.IOException
Read and return a single byte from this input stream, or -1 if end of file has been encountered.
Overrides:
read in class java.io.InputStream
Throws:
java.io.IOException - if an input/output error occurs

read

public int read(byte[] b)
         throws java.io.IOException
Read some number of bytes from the input stream, and store them into the buffer array b. The number of bytes actually read is returned as an integer. This method blocks until input data is available, end of file is detected, or an exception is thrown.
Overrides:
read in class java.io.InputStream
Parameters:
b - The buffer into which the data is read
Throws:
java.io.IOException - if an input/output error occurs

read

public int read(byte[] b,
                int off,
                int len)
         throws java.io.IOException
Read up to len bytes of data from the input stream into an array of bytes. An attempt is made to read as many as len bytes, but a smaller number may be read, possibly zero. The number of bytes actually read is returned as an integer. This method blocks until input data is available, end of file is detected, or an exception is thrown.
Overrides:
read in class java.io.InputStream
Parameters:
b - The buffer into which the data is read
off - The start offset into array b at which the data is written
len - The maximum number of bytes to read
Throws:
java.io.IOException - if an input/output error occurs

readLine

public int readLine(byte[] b,
                    int off,
                    int len)
             throws java.io.IOException
Read into an array of bytes until all requested bytes have been read or a '\n' is encountered, in which case the '\n' is read into the array as well.
Overrides:
readLine in class javax.servlet.ServletInputStream
Parameters:
b - The buffer where data is stored
off - The start offset into the buffer
len - The maximum number of bytes to be returned
Returns:
The actual number of bytes read, or -1 if the end of the stream is reached or the byte limit has been exceeded
Throws:
java.io.IOException - if an input/output error occurs

skip

public long skip(long n)
          throws java.io.IOException
Skip the specified number of bytes of input, and return the actual number of bytes skipped.
Overrides:
skip in class java.io.InputStream
Parameters:
n - The number of bytes to be skipped
Throws:
java.io.IOException - if an input/output error occurs

copyLine

protected int copyLine(byte[] source,
                       int srcOff,
                       byte[] dest,
                       int destOff,
                       int len)
Copy up to a line of data from source to destination buffer.

fill

protected void fill()
             throws java.io.IOException
Refill the buffer from the underlying stream.
Throws:
java.io.IOException - if an input/output error occurs


Copyright © 2000 Apache Software Foundation. All Rights Reserved.