Package org.eclipse.jetty.server
Class HttpInput
- java.lang.Object
-
- java.io.InputStream
-
- javax.servlet.ServletInputStream
-
- org.eclipse.jetty.server.HttpInput
-
- All Implemented Interfaces:
java.io.Closeable,java.lang.AutoCloseable,java.lang.Runnable
- Direct Known Subclasses:
HttpInputOverHTTP
public class HttpInput extends ServletInputStream implements java.lang.Runnable
HttpInputprovides an implementation ofServletInputStreamforHttpChannel.Content may arrive in patterns such as [content(), content(), messageComplete()] so that this class maintains two states: the content state that tells whether there is content to consume and the EOF state that tells whether an EOF has arrived. Only once the content has been consumed the content state is moved to the EOF state.
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static classHttpInput.ChainedInterceptorAnHttpInput.Interceptorthat chains two otherHttpInput.Interceptors together.static classHttpInput.Contentstatic classHttpInput.EofContentstatic interfaceHttpInput.InterceptorAn interceptor for HTTP Request input.static classHttpInput.SentinelContentA Sentinel Content, which has zero length content but indicates some other event in the input stream (eg EOF)
-
Constructor Summary
Constructors Constructor Description HttpInput(HttpChannelState state)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description booleanaddContent(HttpInput.Content content)Adds some content to this input stream.voidaddInterceptor(HttpInput.Interceptor interceptor)Set theHttpInput.Interceptor, using aHttpInput.ChainedInterceptorif anHttpInput.Interceptoris already set.voidasyncReadProduce()Called by channel when asynchronous IO needs to produce more contentintavailable()booleanconsumeAll()booleanearlyEOF()This method should be called to signal that an EOF has been detected before all the expected content arrived.booleaneof()This method should be called to signal that all the expected content arrived.booleanfailed(java.lang.Throwable x)longgetContentConsumed()HttpInput.InterceptorgetInterceptor()booleanhasContent()booleanisAsync()booleanisError()booleanisFinished()booleanisReady()booleanonIdleTimeout(java.lang.Throwable x)intread()intread(byte[] b, int off, int len)voidrecycle()voidrun()voidsetInterceptor(HttpInput.Interceptor interceptor)Set the interceptor.voidsetReadListener(ReadListener readListener)java.lang.StringtoString()voidunblock()-
Methods inherited from class javax.servlet.ServletInputStream
readLine
-
-
-
-
Constructor Detail
-
HttpInput
public HttpInput(HttpChannelState state)
-
-
Method Detail
-
recycle
public void recycle()
-
getInterceptor
public HttpInput.Interceptor getInterceptor()
- Returns:
- The current Interceptor, or null if none set
-
setInterceptor
public void setInterceptor(HttpInput.Interceptor interceptor)
Set the interceptor.- Parameters:
interceptor- The interceptor to use.
-
addInterceptor
public void addInterceptor(HttpInput.Interceptor interceptor)
Set theHttpInput.Interceptor, using aHttpInput.ChainedInterceptorif anHttpInput.Interceptoris already set.- Parameters:
interceptor- the nextHttpInput.Interceptorin a chain
-
available
public int available()
- Overrides:
availablein classjava.io.InputStream
-
read
public int read() throws java.io.IOException- Specified by:
readin classjava.io.InputStream- Throws:
java.io.IOException
-
read
public int read(byte[] b, int off, int len) throws java.io.IOException- Overrides:
readin classjava.io.InputStream- Throws:
java.io.IOException
-
asyncReadProduce
public void asyncReadProduce() throws java.io.IOExceptionCalled by channel when asynchronous IO needs to produce more content- Throws:
java.io.IOException- if unable to produce content
-
addContent
public boolean addContent(HttpInput.Content content)
Adds some content to this input stream.- Parameters:
content- the content to add- Returns:
- true if content channel woken for read
-
hasContent
public boolean hasContent()
-
unblock
public void unblock()
-
getContentConsumed
public long getContentConsumed()
-
earlyEOF
public boolean earlyEOF()
This method should be called to signal that an EOF has been detected before all the expected content arrived.Typically this will result in an EOFException being thrown from a subsequent read rather than a -1 return.
- Returns:
- true if content channel woken for read
-
eof
public boolean eof()
This method should be called to signal that all the expected content arrived.- Returns:
- true if content channel woken for read
-
consumeAll
public boolean consumeAll()
-
isError
public boolean isError()
-
isAsync
public boolean isAsync()
-
isFinished
public boolean isFinished()
- Specified by:
isFinishedin classServletInputStream
-
isReady
public boolean isReady()
- Specified by:
isReadyin classServletInputStream
-
setReadListener
public void setReadListener(ReadListener readListener)
- Specified by:
setReadListenerin classServletInputStream
-
onIdleTimeout
public boolean onIdleTimeout(java.lang.Throwable x)
-
failed
public boolean failed(java.lang.Throwable x)
-
run
public void run()
- Specified by:
runin interfacejava.lang.Runnable
-
toString
public java.lang.String toString()
- Overrides:
toStringin classjava.lang.Object
-
-