Class HttpConnection
- All Implemented Interfaces:
Closeable,AutoCloseable,Runnable,Connection,Connection.UpgradeFrom,Connection.UpgradeTo,WriteFlusher.Listener,HttpTransport
A Connection that handles the HTTP protocol.
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionprivate classprivate classprivate classprivate classNested classes/interfaces inherited from interface org.eclipse.jetty.io.Connection
Connection.Listener, Connection.UpgradeFrom, Connection.UpgradeTo -
Field Summary
FieldsModifier and TypeFieldDescriptionprivate static final ThreadLocal<HttpConnection> private final HttpConnection.AsyncReadCallbackprivate final HttpConnection.BlockingReadCallbackprivate final ByteBufferPoolprivate final HttpChannelOverHttpprivate final HttpConfigurationprivate final Connectorprivate final AtomicIntegerprivate final HttpGeneratorprivate final HttpInputprivate final HttpParserprivate final booleanprivate ByteBufferprivate final HttpConnection.SendCallbackprivate final LongAdderprivate final LongAdderprivate static final booleanstatic final HttpFieldprivate static final booleanprivate static final Loggerprivate static final booleanstatic final String -
Constructor Summary
ConstructorsConstructorDescriptionHttpConnection(HttpConfiguration config, Connector connector, EndPoint endPoint, HttpCompliance compliance, boolean recordComplianceViolations) -
Method Summary
Modifier and TypeMethodDescriptionvoidAborts this transport.voidvoidvoidprotected booleanFill and parse data looking for contentprivate intlonglongstatic HttpConnectionGet the current connection that this thread is dispatched to.Deprecated.longlongbooleanIs the underlying transport optimized for DirectBuffer usagebooleanbooleanboolean(package private) HttpInput.Contentprotected HttpChannelOverHttpprotected HttpGeneratorprotected HttpParsernewHttpParser(HttpCompliance compliance) protected HttpParser.RequestHandlervoidonClose()Callback method invoked when this connection is closed.voidCalled to indicated the end of the current request/response cycle (which may be some time after the last content is sent).voidCallback method invoked when the endpoint is ready to be read.protected voidonFillInterestedFailed(Throwable cause) Callback method invoked when the endpoint failed to be ready to be read.voidonFlushed(long bytes) Invoked when aWriteFlusherflushed bytes in a non-blocking way, as part of a - possibly larger - write.voidonOpen()Callback method invoked when this connection is opened.protected booleanonReadTimeout(Throwable timeout) Callback method invoked when the endpoint failed to be ready to be read after a timeoutInvoked during anupgradeto produce a buffer containing bytes that have not been consumed by this connection, and that must be consumed by the upgrade-to connection.voidonUpgradeTo(ByteBuffer buffer) Invoked during anupgradeto receive a buffer containing bytes that have not been consumed by the upgrade-from connection, and that must be consumed by this connection.private booleanvoidpush(MetaData.Request request) (package private) voidvoidrun()voidsend(MetaData.Response info, boolean head, ByteBuffer content, boolean lastContent, Callback callback) Asynchronous call to send a response (or part) over the transportprotected static HttpConnectionsetCurrentConnection(HttpConnection connection) Methods inherited from class org.eclipse.jetty.io.AbstractConnection
addListener, close, failedCallback, fillInterested, getCreatedTimeStamp, getEndPoint, getExecutor, getInputBufferSize, isFillInterested, onIdleExpired, removeListener, setInputBufferSize, toString, tryFillInterested, tryFillInterested
-
Field Details
-
LOG
-
CONNECTION_CLOSE
-
UPGRADE_CONNECTION_ATTRIBUTE
- See Also:
-
REQUEST_BUFFER_DIRECT
private static final boolean REQUEST_BUFFER_DIRECT- See Also:
-
HEADER_BUFFER_DIRECT
private static final boolean HEADER_BUFFER_DIRECT- See Also:
-
CHUNK_BUFFER_DIRECT
private static final boolean CHUNK_BUFFER_DIRECT- See Also:
-
__currentConnection
-
_config
-
_connector
-
_bufferPool
-
_input
-
_generator
-
_channel
-
_parser
-
_contentBufferReferences
-
_requestBuffer
-
_blockingReadCallback
-
_asyncReadCallback
-
_sendCallback
-
_recordHttpComplianceViolations
private final boolean _recordHttpComplianceViolations -
bytesIn
-
bytesOut
-
-
Constructor Details
-
HttpConnection
public HttpConnection(HttpConfiguration config, Connector connector, EndPoint endPoint, HttpCompliance compliance, boolean recordComplianceViolations)
-
-
Method Details
-
getCurrentConnection
Get the current connection that this thread is dispatched to. Note that a thread may be processing a request asynchronously and thus not be dispatched to the connection.- Returns:
- the current HttpConnection or null
- See Also:
-
setCurrentConnection
-
getHttpCompliance
Deprecated. -
getHttpConfiguration
-
isRecordHttpComplianceViolations
public boolean isRecordHttpComplianceViolations() -
newHttpGenerator
-
newHttpChannel
-
newHttpParser
-
newRequestHandler
-
getServer
-
getConnector
-
getHttpChannel
-
getParser
-
getGenerator
-
isOptimizedForDirectBuffers
public boolean isOptimizedForDirectBuffers()Description copied from interface:HttpTransportIs the underlying transport optimized for DirectBuffer usage- Specified by:
isOptimizedForDirectBuffersin interfaceHttpTransport- Returns:
- True if direct buffers can be used optimally.
-
getMessagesIn
public long getMessagesIn()- Specified by:
getMessagesInin interfaceConnection- Overrides:
getMessagesInin classAbstractConnection
-
getMessagesOut
public long getMessagesOut()- Specified by:
getMessagesOutin interfaceConnection- Overrides:
getMessagesOutin classAbstractConnection
-
onUpgradeFrom
Description copied from interface:Connection.UpgradeFromInvoked during an
upgradeto produce a buffer containing bytes that have not been consumed by this connection, and that must be consumed by the upgrade-to connection.- Specified by:
onUpgradeFromin interfaceConnection.UpgradeFrom- Returns:
- a buffer of unconsumed bytes to pass to the upgrade-to connection. The buffer does not belong to any pool and should be discarded after having consumed its bytes. The returned buffer may be null if there are no unconsumed bytes.
-
onUpgradeTo
Description copied from interface:Connection.UpgradeToInvoked during an
upgradeto receive a buffer containing bytes that have not been consumed by the upgrade-from connection, and that must be consumed by this connection.- Specified by:
onUpgradeToin interfaceConnection.UpgradeTo- Parameters:
buffer- a non-null buffer of unconsumed bytes received from the upgrade-from connection. The buffer does not belong to any pool and should be discarded after having consumed its bytes.
-
onFlushed
Description copied from interface:WriteFlusher.ListenerInvoked when a
WriteFlusherflushed bytes in a non-blocking way, as part of a - possibly larger - write.This method may be invoked multiple times, for example when writing a large buffer: a first flush of bytes, then the connection became TCP congested, and a subsequent flush of bytes when the connection became writable again.
This method is never invoked concurrently, but may be invoked by different threads, so implementations may not rely on thread-local variables.
Implementations may throw an
IOExceptionto signal that the write should fail, for example if the implementation enforces a minimum data rate.- Specified by:
onFlushedin interfaceWriteFlusher.Listener- Parameters:
bytes- the number of bytes flushed- Throws:
IOException- if the write should fail
-
releaseRequestBuffer
void releaseRequestBuffer() -
getRequestBuffer
-
isRequestBufferEmpty
public boolean isRequestBufferEmpty() -
onFillable
public void onFillable()Description copied from class:AbstractConnectionCallback method invoked when the endpoint is ready to be read.
- Specified by:
onFillablein classAbstractConnection- See Also:
-
fillAndParseForContent
protected boolean fillAndParseForContent()Fill and parse data looking for content- Returns:
- true if an
HttpParser.RequestHandlermethod was called and it returned true;
-
fillRequestBuffer
private int fillRequestBuffer() -
parseRequestBuffer
private boolean parseRequestBuffer() -
onCompleted
public void onCompleted()Description copied from interface:HttpTransportCalled to indicated the end of the current request/response cycle (which may be some time after the last content is sent).- Specified by:
onCompletedin interfaceHttpTransport
-
onReadTimeout
Description copied from class:AbstractConnectionCallback method invoked when the endpoint failed to be ready to be read after a timeout
- Overrides:
onReadTimeoutin classAbstractConnection- Parameters:
timeout- the cause of the read timeout- Returns:
- true to signal that the endpoint must be closed, false to keep the endpoint open
-
onFillInterestedFailed
Description copied from class:AbstractConnectionCallback method invoked when the endpoint failed to be ready to be read.
- Overrides:
onFillInterestedFailedin classAbstractConnection- Parameters:
cause- the exception that caused the failure
-
onOpen
public void onOpen()Description copied from interface:ConnectionCallback method invoked when this connection is opened.
Creators of the connection implementation are responsible for calling this method.
- Specified by:
onOpenin interfaceConnection- Overrides:
onOpenin classAbstractConnection
-
onClose
public void onClose()Description copied from interface:ConnectionCallback method invoked when this connection is closed.
Creators of the connection implementation are responsible for calling this method.
- Specified by:
onClosein interfaceConnection- Overrides:
onClosein classAbstractConnection
-
run
public void run() -
send
public void send(MetaData.Response info, boolean head, ByteBuffer content, boolean lastContent, Callback callback) Description copied from interface:HttpTransportAsynchronous call to send a response (or part) over the transport- Specified by:
sendin interfaceHttpTransport- Parameters:
info- The header info to send, or null if just sending more data. The first call to send for a response must have a non null info.head- True if the response if for a HEAD request (and the data should not be sent).content- A buffer of content to be sent.lastContent- True if the content is the last content for the current response.callback- The Callback instance that success or failure of the send is notified on
-
newContent
-
abort
Description copied from interface:HttpTransportAborts this transport.This method should terminate the transport in a way that can indicate an abnormal response to the client, for example by abruptly close the connection.
This method is called when an error response needs to be sent, but the response is already committed, or when a write failure is detected. If abort is called,
HttpTransport.onCompleted()is not called- Specified by:
abortin interfaceHttpTransport- Parameters:
failure- the failure that caused the abort.
-
isPushSupported
public boolean isPushSupported()- Specified by:
isPushSupportedin interfaceHttpTransport- Returns:
- true if responses can be pushed over this transport
-
push
- Specified by:
pushin interfaceHttpTransport- Parameters:
request- A request to use as the basis for generating a pushed response.
-
asyncReadFillInterested
public void asyncReadFillInterested() -
blockingReadFillInterested
public void blockingReadFillInterested() -
blockingReadFailure
-
getBytesIn
public long getBytesIn()- Specified by:
getBytesInin interfaceConnection- Overrides:
getBytesInin classAbstractConnection
-
getBytesOut
public long getBytesOut()- Specified by:
getBytesOutin interfaceConnection- Overrides:
getBytesOutin classAbstractConnection
-
toConnectionString
- Overrides:
toConnectionStringin classAbstractConnection
-