Package org.eclipse.jetty.server
Class HttpChannelOverHttp
- java.lang.Object
-
- org.eclipse.jetty.server.HttpChannel
-
- org.eclipse.jetty.server.HttpChannelOverHttp
-
- All Implemented Interfaces:
java.lang.Runnable
,HttpParser.ComplianceHandler
,HttpParser.HttpHandler
,HttpParser.RequestHandler
,HttpOutput.Interceptor
public class HttpChannelOverHttp extends HttpChannel implements HttpParser.RequestHandler, HttpParser.ComplianceHandler
An HttpChannel customized to be transported over the HTTP/1 protocol
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from class org.eclipse.jetty.server.HttpChannel
HttpChannel.Listener, HttpChannel.TransientListeners
-
-
Field Summary
-
Fields inherited from class org.eclipse.jetty.server.HttpChannel
NOOP_LISTENER
-
-
Constructor Summary
Constructors Constructor Description HttpChannelOverHttp(HttpConnection httpConnection, Connector connector, HttpConfiguration config, EndPoint endPoint, HttpTransport transport)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
abort(java.lang.Throwable failure)
If a write or similar operation to this channel fails, then this method should be called.void
badMessage(BadMessageException failure)
Called to signal that a bad HTTP message has been received.boolean
content(java.nio.ByteBuffer content)
boolean
contentComplete()
void
continue100(int available)
If the associated response has the Expect header set to 100 Continue, then accessing the input stream indicates that the handler/servlet is ready for the request body and thus a 100 Continue response is sent.void
earlyEOF()
Called to signal that an EOF was received unexpectedly during the parsing of an HTTP messageint
getHeaderCacheSize()
protected void
handleException(java.lang.Throwable x)
Sends an error 500, performing a special logic to detect whether the request is suspended, to avoid concurrent writes from the application.boolean
headerComplete()
boolean
isExpecting100Continue()
boolean
isExpecting102Processing()
boolean
messageComplete()
protected HttpInput
newHttpInput(HttpChannelState state)
void
onAsyncWaitForContent()
void
onBlockWaitForContent()
void
onBlockWaitForContentFailure(java.lang.Throwable failure)
void
onComplianceViolation(HttpCompliance compliance, HttpComplianceSection violation, java.lang.String reason)
void
parsedHeader(HttpField field)
This is the method called by parser when an HTTP Header name and value is foundvoid
parsedTrailer(HttpField field)
This is the method called by parser when an HTTP Trailer name and value is foundvoid
recycle()
boolean
startRequest(java.lang.String method, java.lang.String requestTarget, HttpVersion version)
This is the method called by parser when the HTTP request line is parsed-
Methods inherited from class org.eclipse.jetty.server.HttpChannel
addListener, addRequestLog, commit, ensureConsumeAllOrNotPersistent, execute, formatAddrOrHost, getByteBufferPool, getBytesWritten, getCommittedMetaData, getConnection, getConnector, getEndPoint, getHttpConfiguration, getHttpTransport, getIdleTimeout, getLocalAddress, getLocalName, getLocalPort, getNextInterceptor, getRemoteAddress, getRequest, getRequestLog, getRequests, getResponse, getScheduler, getServer, getServerAuthority, getState, getTransientListeners, handle, isCommitted, isOptimizedForDirectBuffers, isPersistent, isRequestCompleted, isResponseCompleted, isSendError, newHttpOutput, onBadMessage, onCompleted, onContent, onContentComplete, onEarlyEOF, onRequest, onRequestComplete, onTrailers, removeListener, resetBuffer, run, sendResponse, sendResponse, sendResponseAndComplete, setIdleTimeout, setRequestLog, toString, unwrap, useDirectBuffers, write
-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
-
Methods inherited from interface org.eclipse.jetty.http.HttpParser.ComplianceHandler
onComplianceViolation
-
Methods inherited from interface org.eclipse.jetty.http.HttpParser.HttpHandler
badMessage
-
-
-
-
Constructor Detail
-
HttpChannelOverHttp
public HttpChannelOverHttp(HttpConnection httpConnection, Connector connector, HttpConfiguration config, EndPoint endPoint, HttpTransport transport)
-
-
Method Detail
-
newHttpInput
protected HttpInput newHttpInput(HttpChannelState state)
- Overrides:
newHttpInput
in classHttpChannel
-
recycle
public void recycle()
- Overrides:
recycle
in classHttpChannel
-
isExpecting100Continue
public boolean isExpecting100Continue()
- Overrides:
isExpecting100Continue
in classHttpChannel
-
isExpecting102Processing
public boolean isExpecting102Processing()
- Overrides:
isExpecting102Processing
in classHttpChannel
-
startRequest
public boolean startRequest(java.lang.String method, java.lang.String requestTarget, HttpVersion version)
Description copied from interface:HttpParser.RequestHandler
This is the method called by parser when the HTTP request line is parsed- Specified by:
startRequest
in interfaceHttpParser.RequestHandler
- Parameters:
method
- The methodrequestTarget
- The raw bytes of the URI. These are copied into a ByteBuffer that will not be changed until this parser is reset and reused.version
- the http version in use- Returns:
- true if handling parsing should return.
-
parsedHeader
public void parsedHeader(HttpField field)
Description copied from interface:HttpParser.HttpHandler
This is the method called by parser when an HTTP Header name and value is found- Specified by:
parsedHeader
in interfaceHttpParser.HttpHandler
- Parameters:
field
- The field parsed
-
parsedTrailer
public void parsedTrailer(HttpField field)
Description copied from interface:HttpParser.HttpHandler
This is the method called by parser when an HTTP Trailer name and value is found- Specified by:
parsedTrailer
in interfaceHttpParser.HttpHandler
- Parameters:
field
- The field parsed
-
continue100
public void continue100(int available) throws java.io.IOException
If the associated response has the Expect header set to 100 Continue, then accessing the input stream indicates that the handler/servlet is ready for the request body and thus a 100 Continue response is sent.- Overrides:
continue100
in classHttpChannel
- Parameters:
available
- estimate of the number of bytes that are available- Throws:
java.io.IOException
- if the InputStream cannot be created
-
earlyEOF
public void earlyEOF()
Description copied from interface:HttpParser.HttpHandler
Called to signal that an EOF was received unexpectedly during the parsing of an HTTP message- Specified by:
earlyEOF
in interfaceHttpParser.HttpHandler
-
content
public boolean content(java.nio.ByteBuffer content)
- Specified by:
content
in interfaceHttpParser.HttpHandler
-
onAsyncWaitForContent
public void onAsyncWaitForContent()
- Overrides:
onAsyncWaitForContent
in classHttpChannel
-
onBlockWaitForContent
public void onBlockWaitForContent()
- Overrides:
onBlockWaitForContent
in classHttpChannel
-
onBlockWaitForContentFailure
public void onBlockWaitForContentFailure(java.lang.Throwable failure)
- Overrides:
onBlockWaitForContentFailure
in classHttpChannel
-
badMessage
public void badMessage(BadMessageException failure)
Description copied from interface:HttpParser.HttpHandler
Called to signal that a bad HTTP message has been received.- Specified by:
badMessage
in interfaceHttpParser.HttpHandler
- Parameters:
failure
- the failure with the bad message information
-
headerComplete
public boolean headerComplete()
- Specified by:
headerComplete
in interfaceHttpParser.HttpHandler
-
handleException
protected void handleException(java.lang.Throwable x)
Description copied from class:HttpChannel
Sends an error 500, performing a special logic to detect whether the request is suspended, to avoid concurrent writes from the application.
It may happen that the application suspends, and then throws an exception, while an application spawned thread writes the response content; in such case, we attempt to commit the error directly bypassing the
ErrorHandler
mechanisms and the response OutputStream.- Overrides:
handleException
in classHttpChannel
- Parameters:
x
- the Throwable that caused the problem
-
abort
public void abort(java.lang.Throwable failure)
Description copied from class:HttpChannel
If a write or similar operation to this channel fails, then this method should be called.The standard implementation calls
HttpTransport.abort(Throwable)
.- Overrides:
abort
in classHttpChannel
- Parameters:
failure
- the failure that caused the abort.
-
contentComplete
public boolean contentComplete()
- Specified by:
contentComplete
in interfaceHttpParser.HttpHandler
-
messageComplete
public boolean messageComplete()
- Specified by:
messageComplete
in interfaceHttpParser.HttpHandler
-
getHeaderCacheSize
public int getHeaderCacheSize()
- Specified by:
getHeaderCacheSize
in interfaceHttpParser.HttpHandler
- Returns:
- the size in bytes of the per parser header cache
-
onComplianceViolation
public void onComplianceViolation(HttpCompliance compliance, HttpComplianceSection violation, java.lang.String reason)
- Specified by:
onComplianceViolation
in interfaceHttpParser.ComplianceHandler
-
-