Class HttpChannelOverHttp
java.lang.Object
org.eclipse.jetty.server.HttpChannel
org.eclipse.jetty.server.HttpChannelOverHttp
- All Implemented Interfaces:
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 HttpChannel
HttpChannel.Dispatchable, HttpChannel.Listener, HttpChannel.TransientListeners -
Field Summary
FieldsModifier and TypeFieldDescriptionprivate HttpFieldprivate booleanprivate booleanprivate booleanprivate final HttpFieldsprivate final HttpConnectionprivate final MetaData.Requestprivate HttpFieldsprivate booleanprivate HttpFieldprivate static final Loggerprivate static final HttpFieldFields inherited from class HttpChannel
NOOP_LISTENER -
Constructor Summary
ConstructorsConstructorDescriptionHttpChannelOverHttp(HttpConnection httpConnection, Connector connector, HttpConfiguration config, EndPoint endPoint, HttpTransport transport) -
Method Summary
Modifier and TypeMethodDescriptionvoidIf a write or similar operation to this channel fails, then this method should be called.voidbadMessage(BadMessageException failure) Called to signal that a bad HTTP message has been received.booleancontent(ByteBuffer content) booleanvoidcontinue100(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.voidearlyEOF()Called to signal that an EOF was received unexpectedly during the parsing of an HTTP messageintprotected voidSends an error 500, performing a special logic to detect whether the request is suspended, to avoid concurrent writes from the application.booleanbooleanbooleanbooleanprotected HttpInputnewHttpInput(HttpChannelState state) voidvoidvoidonBlockWaitForContentFailure(Throwable failure) voidonComplianceViolation(HttpCompliance compliance, HttpComplianceSection violation, String reason) (package private) booleanonIdleTimeout(Throwable timeout) voidparsedHeader(HttpField field) This is the method called by parser when an HTTP Header name and value is foundvoidparsedTrailer(HttpField field) This is the method called by parser when an HTTP Trailer name and value is foundvoidrecycle()booleanstartRequest(String method, String requestTarget, HttpVersion version) This is the method called by parser when the HTTP request line is parsedprivate booleanupgrade()Attempts to perform an HTTP/1.1 upgrade.Methods inherited from class 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, writeMethods inherited from class Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, waitMethods inherited from interface HttpParser.ComplianceHandler
onComplianceViolationMethods inherited from interface HttpParser.HttpHandler
badMessage
-
Field Details
-
LOG
-
PREAMBLE_UPGRADE_H2C
-
_fields
-
_metadata
-
_httpConnection
-
_connection
-
_upgrade
-
_delayedForContent
private boolean _delayedForContent -
_unknownExpectation
private boolean _unknownExpectation -
_expect100Continue
private boolean _expect100Continue -
_expect102Processing
private boolean _expect102Processing -
_complianceViolations
-
_trailers
-
-
Constructor Details
-
HttpChannelOverHttp
public HttpChannelOverHttp(HttpConnection httpConnection, Connector connector, HttpConfiguration config, EndPoint endPoint, HttpTransport transport)
-
-
Method Details
-
newHttpInput
- Overrides:
newHttpInputin classHttpChannel
-
recycle
public void recycle()- Overrides:
recyclein classHttpChannel
-
isExpecting100Continue
public boolean isExpecting100Continue()- Overrides:
isExpecting100Continuein classHttpChannel
-
isExpecting102Processing
public boolean isExpecting102Processing()- Overrides:
isExpecting102Processingin classHttpChannel
-
startRequest
Description copied from interface:HttpParser.RequestHandlerThis is the method called by parser when the HTTP request line is parsed- Specified by:
startRequestin 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
Description copied from interface:HttpParser.HttpHandlerThis is the method called by parser when an HTTP Header name and value is found- Specified by:
parsedHeaderin interfaceHttpParser.HttpHandler- Parameters:
field- The field parsed
-
parsedTrailer
Description copied from interface:HttpParser.HttpHandlerThis is the method called by parser when an HTTP Trailer name and value is found- Specified by:
parsedTrailerin interfaceHttpParser.HttpHandler- Parameters:
field- The field parsed
-
continue100
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:
continue100in classHttpChannel- Parameters:
available- estimate of the number of bytes that are available- Throws:
IOException- if the InputStream cannot be created
-
earlyEOF
public void earlyEOF()Description copied from interface:HttpParser.HttpHandlerCalled to signal that an EOF was received unexpectedly during the parsing of an HTTP message- Specified by:
earlyEOFin interfaceHttpParser.HttpHandler
-
content
- Specified by:
contentin interfaceHttpParser.HttpHandler
-
onAsyncWaitForContent
public void onAsyncWaitForContent()- Overrides:
onAsyncWaitForContentin classHttpChannel
-
onBlockWaitForContent
public void onBlockWaitForContent()- Overrides:
onBlockWaitForContentin classHttpChannel
-
onBlockWaitForContentFailure
- Overrides:
onBlockWaitForContentFailurein classHttpChannel
-
badMessage
Description copied from interface:HttpParser.HttpHandlerCalled to signal that a bad HTTP message has been received.- Specified by:
badMessagein interfaceHttpParser.HttpHandler- Parameters:
failure- the failure with the bad message information
-
headerComplete
public boolean headerComplete()- Specified by:
headerCompletein interfaceHttpParser.HttpHandler
-
onIdleTimeout
-
upgrade
Attempts to perform an HTTP/1.1 upgrade.
The upgrade looks up a
ConnectionFactory.Upgradingfrom the connector matching the protocol specified in theUpgradeheader.The upgrade may succeed, be ignored (which can allow a later handler to implement) or fail with a
BadMessageException.- Returns:
- true if the upgrade was performed, false if it was ignored
- Throws:
BadMessageException- if the upgrade failed
-
handleException
Description copied from class:HttpChannelSends 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
ErrorHandlermechanisms and the response OutputStream.- Overrides:
handleExceptionin classHttpChannel- Parameters:
x- the Throwable that caused the problem
-
abort
Description copied from class:HttpChannelIf a write or similar operation to this channel fails, then this method should be called.The standard implementation calls
HttpTransport.abort(Throwable).- Overrides:
abortin classHttpChannel- Parameters:
failure- the failure that caused the abort.
-
contentComplete
public boolean contentComplete()- Specified by:
contentCompletein interfaceHttpParser.HttpHandler
-
messageComplete
public boolean messageComplete()- Specified by:
messageCompletein interfaceHttpParser.HttpHandler
-
getHeaderCacheSize
public int getHeaderCacheSize()- Specified by:
getHeaderCacheSizein interfaceHttpParser.HttpHandler- Returns:
- the size in bytes of the per parser header cache
-
onComplianceViolation
public void onComplianceViolation(HttpCompliance compliance, HttpComplianceSection violation, String reason) - Specified by:
onComplianceViolationin interfaceHttpParser.ComplianceHandler
-