|
|||||||||
| Home >> All >> [ HTTPClient overview ] | PREV CLASS NEXT CLASS | ||||||||
SUMMARY: JAVADOC | SOURCE | DOWNLOAD | NESTED | FIELD | CONSTR | METHOD |
DETAIL: FIELD | CONSTR | METHOD | ||||||||
HTTPClient
Class ExtBufferedInputStream

java.lang.Objectjava.io.InputStream
java.io.FilterInputStream
HTTPClient.ExtBufferedInputStream
- final class ExtBufferedInputStream
- extends java.io.FilterInputStream
This class is a modified copy of java.io.BufferedInputStream which fixes the problem in fill when an InterrupedIOException occurs and which extends the class to allow searching for a string in the internal buffer (used for multipart content-types).
- Version:
- 0.3-2 18/06/1999
| Field Summary | |
protected byte[] |
buf
The buffer where data is stored. |
protected int |
count
The index one greater than the index of the last valid byte in the buffer. |
protected int |
marklimit
The maximum read ahead allowed after a call to the mark method before subsequent calls to the
reset method fail. |
protected int |
markpos
The value of the pos field at the time the last
mark method was called. |
protected int |
pos
The current position in the buffer. |
| Fields inherited from class java.io.FilterInputStream |
in |
| Constructor Summary | |
ExtBufferedInputStream(java.io.InputStream in)
Creates a new buffered input stream to read data from the specified input stream with a default 512-byte buffer size. |
|
ExtBufferedInputStream(java.io.InputStream in,
int size)
Creates a new buffered input stream to read data from the specified input stream with the specified buffer size. |
|
| Method Summary | |
int |
available()
Returns the number of bytes that can be read from this input stream without blocking. |
private void |
fill()
Fills the buffer with more data, taking into account shuffling and other tricks for dealing with marks. |
(package private) void |
initMark()
Initialises the mark and sets the marklimit to the buffer length. |
void |
mark(int readlimit)
Marks the current position in this input stream. |
boolean |
markSupported()
Tests if this input stream supports the mark
and reset methods. |
(package private) int |
pastEnd(byte[] search,
int[] search_cmp)
Figures out how many bytes past the end of the multipart we read. |
int |
read()
Reads the next byte of data from this buffered input stream. |
int |
read(byte[] b,
int off,
int len)
Reads bytes into a portion of an array. |
void |
reset()
Repositions this stream to the position at the time the mark method was last called on this input stream. |
long |
skip(long n)
Skips over and discards n bytes of data from the
input stream. |
| Methods inherited from class java.io.FilterInputStream |
close, read |
| Methods inherited from class java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
| Field Detail |
buf
protected byte[] buf
- The buffer where data is stored.
- Since:
- JDK1.0
count
protected int count
- The index one greater than the index of the last valid byte in
the buffer.
- Since:
- JDK1.0
pos
protected int pos
- The current position in the buffer. This is the index of the next
character to be read from the
bufarray.- Since:
- JDK1.0
- See Also:
- BufferedInputStream.buf>
BufferedInputStream.buf55
markpos
protected int markpos
- The value of the
posfield at the time the lastmarkmethod was called. The value of this field is-1if there is no current mark.- Since:
- JDK1.0
- See Also:
- BufferedInputStream.mark(int)>
BufferedInputStream.mark(int)55 , BufferedInputStream.pos>BufferedInputStream.pos55
marklimit
protected int marklimit
- The maximum read ahead allowed after a call to the
markmethod before subsequent calls to theresetmethod fail.- Since:
- JDK1.0
- See Also:
- BufferedInputStream.mark(int)>
BufferedInputStream.mark(int)55 , BufferedInputStream.reset()>BufferedInputStream.reset()55
| Constructor Detail |
ExtBufferedInputStream
public ExtBufferedInputStream(java.io.InputStream in)
- Creates a new buffered input stream to read data from the
specified input stream with a default 512-byte buffer size.
- Since:
- JDK1.0
ExtBufferedInputStream
public ExtBufferedInputStream(java.io.InputStream in, int size)
- Creates a new buffered input stream to read data from the
specified input stream with the specified buffer size.
- Since:
- JDK1.0
| Method Detail |
fill
private void fill()
throws java.io.IOException
- Fills the buffer with more data, taking into account
shuffling and other tricks for dealing with marks.
Assumes that it is being called by a synchronized method.
This method also assumes that all data has already been read in,
hence pos > count.
read
public int read()
throws java.io.IOException
- Reads the next byte of data from this buffered input stream. The
value byte is returned as an
intin the range0to255. If no byte is available because the end of the stream has been reached, the value-1is returned. This method blocks until input data is available, the end of the stream is detected, or an exception is thrown.The
readmethod ofBufferedInputStreamreturns the next byte of data from its buffer if the buffer is not empty. Otherwise, it refills the buffer from the underlying input stream and returns the next character, if the underlying stream has not returned an end-of-stream indicator.- Since:
- JDK1.0
read
public int read(byte[] b,
int off,
int len)
throws java.io.IOException
- Reads bytes into a portion of an array. This method will block until
some input is available, an I/O error occurs, or the end of the stream
is reached.
If this stream's buffer is not empty, bytes are copied from it into the array argument. Otherwise, the buffer is refilled from the underlying input stream and, unless the stream returns an end-of-stream indication, the array argument is filled with characters from the newly-filled buffer.
As an optimization, if the buffer is empty, the mark is not valid, and
lenis at least as large as the buffer, then this method will read directly from the underlying stream into the given array. Thus redundantBufferedInputStreams will not copy data unnecessarily.
skip
public long skip(long n)
throws java.io.IOException
- Skips over and discards
nbytes of data from the input stream. Theskipmethod may, for a variety of reasons, end up skipping over some smaller number of bytes, possibly zero. The actual number of bytes skipped is returned.The
skipmethod ofBufferedInputStreamcompares the number of bytes it has available in its buffer, k, where k =count - pos, withn. Ifn≤ k, then theposfield is incremented byn. Otherwise, theposfield is incremented to have the valuecount, and the remaining bytes are skipped by calling theskipmethod on the underlying input stream, supplying the argumentn -k.- Since:
- JDK1.0
available
public int available()
throws java.io.IOException
- Returns the number of bytes that can be read from this input
stream without blocking.
The
availablemethod ofBufferedInputStreamreturns the sum of the the number of bytes remaining to be read in the buffer (count - pos) and the result of calling theavailablemethod of the underlying input stream.- Since:
- JDK1.0
mark
public void mark(int readlimit)
- Marks the current position in this input stream. A subsequent
call to the
resetmethod repositions the stream at the last marked position so that subsequent reads re-read the same bytes.The
readlimitargument tells the input stream to allow that many bytes to be read before the mark position gets invalidated.- Since:
- JDK1.0
reset
public void reset()
throws java.io.IOException
- Repositions this stream to the position at the time the
markmethod was last called on this input stream.If the stream has not been marked, or if the mark has been invalidated, an IOException is thrown. Stream marks are intended to be used in situations where you need to read ahead a little to see what's in the stream. Often this is most easily done by invoking some general parser. If the stream is of the type handled by the parser, it just chugs along happily. If the stream is not of that type, the parser should toss an exception when it fails. If an exception gets tossed within readlimit bytes, the parser will allow the outer code to reset the stream and to try another parser.
- Since:
- JDK1.0
markSupported
public boolean markSupported()
- Tests if this input stream supports the
markandresetmethods. ThemarkSupportedmethod ofBufferedInputStreamreturnstrue.- Since:
- JDK1.0
pastEnd
int pastEnd(byte[] search,
int[] search_cmp)
- Figures out how many bytes past the end of the multipart we read.
It then resets the markpos to either just past the end boundary
if we found it, or back enough from the current position so we
can always be sure to find the boundary.
initMark
void initMark()
- Initialises the mark and sets the marklimit to the buffer length.
|
|||||||||
| Home >> All >> [ HTTPClient overview ] | PREV CLASS NEXT CLASS | ||||||||
SUMMARY: JAVADOC | SOURCE | DOWNLOAD | NESTED | FIELD | CONSTR | METHOD |
DETAIL: FIELD | CONSTR | METHOD | ||||||||
JAVADOC