Top Description Fields Constructors Methods
org.eclipse.jetty.ee10.servlet

public Class HttpInput

extends ServletInputStream
implements Runnable
Class Inheritance
All Implemented Interfaces
java.lang.Runnable
Imports
java.io.IOException, java.nio.ByteBuffer, java.util.Objects, java.util.concurrent.atomic.LongAdder, jakarta.servlet.ReadListener, .ServletInputStream, org.eclipse.jetty.io.Content, org.eclipse.jetty.server.Context, org.eclipse.jetty.util.thread.AutoLock, org.slf4j.Logger, .LoggerFactory

While this class is-a Runnable, it should never be dispatched in it's own thread. It is a runnable only so that the calling thread can use Context#run(Runnable) to setup classloaders etc.

Field Summary

Modifier and TypeField and Description
pack-priv final AsyncContentProducer
pack-priv final BlockingContentProducer
private final ServletChannelState
private volatile boolean
private final LongAdder
private volatile ContentProducer
pack-priv final AutoLock
_lock

The lock shared with AsyncContentProducer and this class.

private final byte[]
private volatile ReadListener
private final ServletChannel
private static final Logger

Constructor Summary

AccessConstructor and Description
public

Method Summary

Modifier and TypeMethod and Description
public int
available()

Overrides java.io.InputStream.available.

Returns an estimate of the number of bytes that can be read (or skipped over) from this input stream without blocking, which may be 0, or 0 when end of stream is detected.

public boolean
private int
get(Content.Chunk chunk, byte[] bytes, int offset, int length)

private int
public long
public long
public boolean

Returns:

true if the input contains content, false otherwise.
hasContent
()

Check if this HttpInput instance has content stored internally, without fetching/parsing anything from the underlying channel.

public boolean
public boolean
public boolean
isFinished()

Implements abstract jakarta.servlet.ServletInputStream.isFinished.

Returns true when all the data from the stream has been read else it returns false.

public boolean
isReady()

Implements abstract jakarta.servlet.ServletInputStream.isReady.

Returns true if data can be read without blocking else returns false.

public boolean
public int
read()

Implements abstract java.io.InputStream.read.

Reads the next byte of data from the input stream.

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

public int
read(ByteBuffer buffer)

private int
read(ByteBuffer buffer, byte[] b, int off, int len)

public void
public void
public void
run()

Implements java.lang.Runnable.run.

Runs this operation.

private void
public void
setReadListener(ReadListener
the ReadListener that should be notified when it's possible to read.
readListener
)

Implements abstract jakarta.servlet.ServletInputStream.setReadListener.

Instructs the ServletInputStream to invoke the provided ReadListener when it is possible to read

public String
toString()

Overrides java.lang.Object.toString.

Returns a string representation of the object.

Inherited from jakarta.servlet.ServletInputStream:
readLine

Field Detail

_asyncContentProducerback to summary
pack-priv final AsyncContentProducer _asyncContentProducer
_blockingContentProducerback to summary
pack-priv final BlockingContentProducer _blockingContentProducer
_channelStateback to summary
private final ServletChannelState _channelState
_consumedEofback to summary
private volatile boolean _consumedEof
_contentConsumedback to summary
private final LongAdder _contentConsumed
_contentProducerback to summary
private volatile ContentProducer _contentProducer
_lockback to summary
pack-priv final AutoLock _lock

The lock shared with AsyncContentProducer and this class.

_oneByteBufferback to summary
private final byte[] _oneByteBuffer
_readListenerback to summary
private volatile ReadListener _readListener
_servletChannelback to summary
private final ServletChannel _servletChannel
LOGback to summary
private static final Logger LOG

Constructor Detail

HttpInputback to summary
public HttpInput(ServletChannel channel)

Method Detail

availableback to summary
public int available()

Overrides java.io.InputStream.available.

Doc from java.io.InputStream.available.

Returns an estimate of the number of bytes that can be read (or skipped over) from this input stream without blocking, which may be 0, or 0 when end of stream is detected. The read might be on the same thread or another thread. A single read or skip of this many bytes will not block, but may read or skip fewer bytes.

Note that while some implementations of InputStream will return the total number of bytes in the stream, many will not. It is never correct to use the return value of this method to allocate a buffer intended to hold all data in this stream.

A subclass's implementation of this method may choose to throw an IOException if this input stream has been closed by invoking the close() method.

Returns:int

an estimate of the number of bytes that can be read (or skipped over) from this input stream without blocking or 0 when it reaches the end of the input stream.

Annotations
@Override
consumeAvailableback to summary
public boolean consumeAvailable()
getback to summary
private int get(Content.Chunk chunk, byte[] bytes, int offset, int length)
getback to summary
private int get(Content.Chunk chunk, ByteBuffer des)
getContentConsumedback to summary
public long getContentConsumed()
getContentReceivedback to summary
public long getContentReceived()
hasContentback to summary
public boolean hasContent()

Check if this HttpInput instance has content stored internally, without fetching/parsing anything from the underlying channel.

Returns:boolean

true if the input contains content, false otherwise.

isAsyncback to summary
public boolean isAsync()
isErrorback to summary
public boolean isError()
isFinishedback to summary
public boolean isFinished()

Implements abstract jakarta.servlet.ServletInputStream.isFinished.

Doc from jakarta.servlet.ServletInputStream.isFinished.

Returns true when all the data from the stream has been read else it returns false.

Returns:boolean

true when all data for this particular request has been read, otherwise returns false.

Annotations
@Override
isReadyback to summary
public boolean isReady()

Implements abstract jakarta.servlet.ServletInputStream.isReady.

Doc from jakarta.servlet.ServletInputStream.isReady.

Returns true if data can be read without blocking else returns false.

If this method returns false and a ReadListener has been set via setReadListener(ReadListener), then the container will subsequently invoke ReadListener#onDataAvailable() (or ReadListener#onAllDataRead()) once data (or EOF) has become available. Other than the initial call, ReadListener#onDataAvailable() will only be called if and only if this method is called and returns false.

Returns:boolean

true if data can be obtained without blocking, otherwise returns false.

Annotations
@Override
onContentProducibleback to summary
public boolean onContentProducible()
readback to summary
public 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 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.
readback to summary
public int read(ByteBuffer buffer) throws IOException
readback to summary
private int read(ByteBuffer buffer, byte[] b, int off, int len) throws IOException
recycleback to summary
public void recycle()
reopenback to summary
public void reopen()
runback to summary
public void run()

Implements java.lang.Runnable.run.

Doc from java.lang.Runnable.run.

Runs this operation.

Annotations
@Override
scheduleReadListenerNotificationback to summary
private void scheduleReadListenerNotification()
setReadListenerback to summary
public void setReadListener(ReadListener readListener)

Implements abstract jakarta.servlet.ServletInputStream.setReadListener.

Doc from jakarta.servlet.ServletInputStream.setReadListener.

Instructs the ServletInputStream to invoke the provided ReadListener when it is possible to read

Parameters
readListener:ReadListener

the ReadListener that should be notified when it's possible to read.

Annotations
@Override
toStringback to summary
public String toString()

Overrides java.lang.Object.toString.

Doc from java.lang.Object.toString.

Returns a string representation of the object. Satisfying this method's contract implies a non-null result must be returned.

Returns:String

a string representation of the object

Annotations
@Override