Package org.apache.catalina.connector
Class CoyoteInputStream
- java.lang.Object
-
- java.io.InputStream
-
- jakarta.servlet.ServletInputStream
-
- org.apache.catalina.connector.CoyoteInputStream
-
- All Implemented Interfaces:
java.io.Closeable
,java.lang.AutoCloseable
public class CoyoteInputStream extends ServletInputStream
This class handles reading bytes.- Author:
- Remy Maucherat
-
-
Field Summary
Fields Modifier and Type Field Description protected InputBuffer
ib
protected static StringManager
sm
-
Constructor Summary
Constructors Modifier Constructor Description protected
CoyoteInputStream(InputBuffer ib)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description int
available()
protected java.lang.Object
clone()
Prevent cloning the facade.void
close()
Close the stream Since we re-cycle, we can't allow the call to super.close() which would permanently disable us.boolean
isFinished()
Has the end of this InputStream been reached?boolean
isReady()
Can data be read from this InputStream without blocking?int
read()
int
read(byte[] b)
int
read(byte[] b, int off, int len)
int
read(java.nio.ByteBuffer b)
Transfers bytes from the buffer to the specified ByteBuffer.void
setReadListener(ReadListener listener)
Sets theReadListener
for thisServletInputStream
and thereby switches to non-blocking IO.-
Methods inherited from class jakarta.servlet.ServletInputStream
readLine
-
-
-
-
Field Detail
-
sm
protected static final StringManager sm
-
ib
protected InputBuffer ib
-
-
Constructor Detail
-
CoyoteInputStream
protected CoyoteInputStream(InputBuffer ib)
-
-
Method Detail
-
clone
protected java.lang.Object clone() throws java.lang.CloneNotSupportedException
Prevent cloning the facade.- Overrides:
clone
in classjava.lang.Object
- Throws:
java.lang.CloneNotSupportedException
-
read
public int read() throws java.io.IOException
- Specified by:
read
in classjava.io.InputStream
- Throws:
java.io.IOException
-
available
public int available() throws java.io.IOException
- Overrides:
available
in classjava.io.InputStream
- Throws:
java.io.IOException
-
read
public int read(byte[] b) throws java.io.IOException
- Overrides:
read
in classjava.io.InputStream
- Throws:
java.io.IOException
-
read
public int read(byte[] b, int off, int len) throws java.io.IOException
- Overrides:
read
in classjava.io.InputStream
- Throws:
java.io.IOException
-
read
public int read(java.nio.ByteBuffer b) throws java.io.IOException
Transfers bytes from the buffer to the specified ByteBuffer. After the operation the position of the ByteBuffer will be returned to the one before the operation, the limit will be the position incremented by the number of the transferred bytes.- Parameters:
b
- the ByteBuffer into which bytes are to be written.- Returns:
- an integer specifying the actual number of bytes read, or -1 if the end of the stream is reached
- Throws:
java.io.IOException
- if an input or output exception has occurred
-
close
public void close() throws java.io.IOException
Close the stream Since we re-cycle, we can't allow the call to super.close() which would permanently disable us.- Specified by:
close
in interfacejava.lang.AutoCloseable
- Specified by:
close
in interfacejava.io.Closeable
- Overrides:
close
in classjava.io.InputStream
- Throws:
java.io.IOException
-
isFinished
public boolean isFinished()
Description copied from class:jakarta.servlet.ServletInputStream
Has the end of this InputStream been reached?- Specified by:
isFinished
in classServletInputStream
- Returns:
true
if all the data has been read from the stream, elsefalse
-
isReady
public boolean isReady()
Description copied from class:jakarta.servlet.ServletInputStream
Can data be read from this InputStream without blocking? Returns If this method is called and returns false, the container will invokeReadListener.onDataAvailable()
when data is available.- Specified by:
isReady
in classServletInputStream
- Returns:
true
if data can be read without blocking, elsefalse
-
setReadListener
public void setReadListener(ReadListener listener)
Description copied from class:jakarta.servlet.ServletInputStream
Sets theReadListener
for thisServletInputStream
and thereby switches to non-blocking IO. It is only valid to switch to non-blocking IO within async processing or HTTP upgrade processing.- Specified by:
setReadListener
in classServletInputStream
- Parameters:
listener
- The non-blocking IO read listener
-
-