Top Fields Constructors Methods
org.apache.coyote.http11.upgrade

public Class UpgradeServletInputStream

extends ServletInputStream
Class Inheritance
Imports
java.io.IOException, jakarta.servlet.ReadListener, .ServletInputStream, org.apache.coyote.Request, org.apache.juli.logging.Log, .LogFactory, org.apache.tomcat.util.ExceptionUtils, org.apache.tomcat.util.net.DispatchType, .SocketWrapperBase, org.apache.tomcat.util.res.StringManager

Field Summary

Modifier and TypeField and Description
private volatile boolean
private volatile boolean
private volatile ReadListener
private static final Log
private final UpgradeProcessorBase
private volatile Boolean
private static final StringManager
private final SocketWrapperBase<?>
private final UpgradeInfo

Constructor Summary

AccessConstructor and Description
public

Method Summary

Modifier and TypeMethod and Description
public void
close()

Overrides java.io.InputStream.close.

Implements java.io.Closeable.close.

Closes this input stream and releases any system resources associated with the stream.

pack-priv final boolean
public final boolean
isFinished()

Implements abstract jakarta.servlet.ServletInputStream.isFinished.

Has the end of this InputStream been reached?

public final boolean
isReady()

Implements abstract jakarta.servlet.ServletInputStream.isReady.

Can data be read from this InputStream without blocking?

pack-priv final void
private void
private void
public final int
read()

Implements abstract java.io.InputStream.read.

Reads the next byte of data from the input stream.

public final int
read(byte[]
the buffer into which the data is read.
b
,
int
the start offset in array b at which the data is written.
off
,
int
the maximum number of bytes to read.
len
)

Overrides java.io.InputStream.read.

Reads up to len bytes of data from the input stream into an array of bytes.

private int
public final int
readLine(byte[]
an array of bytes into which data is read
b
,
int
an integer specifying the character at which this method begins reading
off
,
int
an integer specifying the maximum number of bytes to read
len
)

Overrides jakarta.servlet.ServletInputStream.readLine.

Reads the input stream, one line at a time.

public final void
setReadListener(ReadListener
The non-blocking IO read listener
listener
)

Implements abstract jakarta.servlet.ServletInputStream.setReadListener.

Sets the ReadListener for this ServletInputStream and thereby switches to non-blocking IO.

Field Detail

closedback to summary
private volatile boolean closed
eofback to summary
private volatile boolean eof
listenerback to summary
private volatile ReadListener listener
logback to summary
private static final Log log
processorback to summary
private final UpgradeProcessorBase processor
readyback to summary
private volatile Boolean ready
smback to summary
private static final StringManager sm
socketWrapperback to summary
private final SocketWrapperBase<?> socketWrapper
upgradeInfoback to summary
private final UpgradeInfo upgradeInfo

Constructor Detail

UpgradeServletInputStreamback to summary
public UpgradeServletInputStream(UpgradeProcessorBase processor, SocketWrapperBase<?> socketWrapper, UpgradeInfo upgradeInfo)

Method Detail

closeback to summary
public void close() throws IOException

Overrides java.io.InputStream.close.

Implements java.io.Closeable.close.

Doc from java.io.InputStream.close.

Closes this input stream and releases any system resources associated with the stream.

Annotations
@Override
Exceptions
IOException:
if an I/O error occurs.
isClosedback to summary
pack-priv final boolean isClosed()
isFinishedback to summary
public final boolean isFinished()

Implements abstract jakarta.servlet.ServletInputStream.isFinished.

Doc from jakarta.servlet.ServletInputStream.isFinished.

Has the end of this InputStream been reached?

Returns:boolean

true if all the data has been read from the stream, else false

Annotations
@Override
isReadyback to summary
public final boolean isReady()

Implements abstract jakarta.servlet.ServletInputStream.isReady.

Doc from jakarta.servlet.ServletInputStream.isReady.

Can data be read from this InputStream without blocking? Returns If this method is called and returns false, the container will invoke ReadListener#onDataAvailable() when data is available.

Returns:boolean

true if data can be read without blocking, else false

Annotations
@Override
onDataAvailableback to summary
pack-priv final void onDataAvailable()
onErrorback to summary
private void onError(Throwable t)
preReadChecksback to summary
private void preReadChecks()
readback to summary
public final int read() throws IOException

Implements abstract java.io.InputStream.read.

Doc from java.io.InputStream.read.

Reads the next byte of data from the input stream. The value byte is returned as an int in the range 0 to 255. If no byte is available because the end of the stream has been reached, the value -1 is returned. This method blocks until input data is available, the end of the stream is detected, or an exception is thrown.

Returns:int

the next byte of data, or -1 if the end of the stream is reached.

Annotations
@Override
Exceptions
IOException:
if an I/O error occurs.
readback to summary
public final int read(byte[] b, int off, int len) throws IOException

Overrides java.io.InputStream.read.

Doc from java.io.InputStream.read.

Reads 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. 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.

If len is zero, then no bytes are read and 0 is returned; otherwise, there is an attempt to read at least one byte. If no byte is available because the stream is at end of file, the value -1 is returned; otherwise, at least one byte is read and stored into b.

The first byte read is stored into element b[off], the next one into b[off+1], and so on. The number of bytes read is, at most, equal to len. Let k be the number of bytes actually read; these bytes will be stored in elements b[off] through b[off+k-1], leaving elements b[off+k] through b[off+len-1] unaffected.

In every case, elements b[0] through b[off-1] and elements b[off+len] through b[b.length-1] are unaffected.

Parameters
b:byte[]

the buffer into which the data is read.

off:int

the start offset in array b at which the data is written.

len:int

the maximum number of bytes to read.

Returns:int

the total number of bytes read into the buffer, or -1 if there is no more data because the end of the stream has been reached.

Annotations
@Override
Exceptions
IOException:
If the first byte cannot be read for any reason other than end of file, or if the input stream has been closed, or if some other I/O error occurs.
readInternalback to summary
private int readInternal() throws IOException
readLineback to summary
public final int readLine(byte[] b, int off, int len) throws IOException

Overrides jakarta.servlet.ServletInputStream.readLine.

Doc from jakarta.servlet.ServletInputStream.readLine.

Reads the input stream, one line at a time. Starting at an offset, reads bytes into an array, until it reads a certain number of bytes or reaches a newline character, which it reads into the array as well.

This method returns -1 if it reaches the end of the input stream before reading the maximum number of bytes.

Parameters
b:byte[]

an array of bytes into which data is read

off:int

an integer specifying the character at which this method begins reading

len:int

an integer specifying the maximum number of bytes to read

Returns:int

an integer specifying the actual number of bytes read, or -1 if the end of the stream is reached

Annotations
@Override
Exceptions
IOException:
if an input or output exception has occurred
setReadListenerback to summary
public final void setReadListener(ReadListener listener)

Implements abstract jakarta.servlet.ServletInputStream.setReadListener.

Doc from jakarta.servlet.ServletInputStream.setReadListener.

Sets the ReadListener for this ServletInputStream and thereby switches to non-blocking IO. It is only valid to switch to non-blocking IO within async processing or HTTP upgrade processing.

Parameters
listener:ReadListener

The non-blocking IO read listener

Annotations
@Override