public class HttpConnection extends AbstractConnection implements Runnable, HttpTransport, WriteFlusher.Listener, Connection.UpgradeFrom, Connection.UpgradeTo
A Connection that handles the HTTP protocol.
Connection.Listener, Connection.UpgradeFrom, Connection.UpgradeTo| Modifier and Type | Field and Description |
|---|---|
static HttpField |
CONNECTION_CLOSE |
static String |
UPGRADE_CONNECTION_ATTRIBUTE |
| Constructor and Description |
|---|
HttpConnection(HttpConfiguration config,
Connector connector,
EndPoint endPoint,
HttpCompliance compliance,
boolean recordComplianceViolations) |
| Modifier and Type | Method and Description |
|---|---|
void |
abort(Throwable failure)
Aborts this transport.
|
void |
asyncReadFillInterested() |
void |
blockingReadFailure(Throwable e) |
void |
blockingReadFillInterested() |
long |
getBytesIn() |
long |
getBytesOut() |
Connector |
getConnector() |
static HttpConnection |
getCurrentConnection()
Get the current connection that this thread is dispatched to.
|
HttpGenerator |
getGenerator() |
HttpChannel |
getHttpChannel() |
HttpConfiguration |
getHttpConfiguration() |
long |
getMessagesIn() |
long |
getMessagesOut() |
HttpParser |
getParser() |
ByteBuffer |
getRequestBuffer() |
Server |
getServer() |
boolean |
isOptimizedForDirectBuffers()
Is the underlying transport optimized for DirectBuffer usage
|
boolean |
isPushSupported() |
boolean |
isRecordHttpComplianceViolations() |
boolean |
isRequestBufferEmpty() |
void |
onClose()
Callback method invoked when this connection is closed.
|
void |
onCompleted()
Called to indicated the end of the current request/response cycle (which may be
some time after the last content is sent).
|
void |
onFillable()
Callback method invoked when the endpoint is ready to be read.
|
void |
onFlushed(long bytes)
Invoked when a
WriteFlusher flushed bytes in a non-blocking way,
as part of a - possibly larger - write. |
void |
onOpen()
Callback method invoked when this connection is opened.
|
ByteBuffer |
onUpgradeFrom()
Takes the input buffer from the connection on upgrade.
|
void |
onUpgradeTo(ByteBuffer buffer)
Callback method invoked when this connection is upgraded.
|
void |
push(MetaData.Request request) |
void |
run() |
void |
send(MetaData.Response info,
boolean head,
ByteBuffer content,
boolean lastContent,
Callback callback)
Asynchronous call to send a response (or part) over the transport
|
String |
toConnectionString() |
addListener, close, fillInterested, getCreatedTimeStamp, getEndPoint, getInputBufferSize, isFillInterested, onIdleExpired, removeListener, setInputBufferSize, toString, tryFillInterested, tryFillInterestedpublic static final HttpField CONNECTION_CLOSE
public static final String UPGRADE_CONNECTION_ATTRIBUTE
public HttpConnection(HttpConfiguration config, Connector connector, EndPoint endPoint, HttpCompliance compliance, boolean recordComplianceViolations)
public static HttpConnection getCurrentConnection()
for a more general way to access the HttpConnectionpublic HttpConfiguration getHttpConfiguration()
public boolean isRecordHttpComplianceViolations()
public Server getServer()
public Connector getConnector()
public HttpChannel getHttpChannel()
public HttpParser getParser()
public HttpGenerator getGenerator()
public boolean isOptimizedForDirectBuffers()
HttpTransportisOptimizedForDirectBuffers in interface HttpTransportpublic long getMessagesIn()
getMessagesIn in interface ConnectiongetMessagesIn in class AbstractConnectionpublic long getMessagesOut()
getMessagesOut in interface ConnectiongetMessagesOut in class AbstractConnectionpublic ByteBuffer onUpgradeFrom()
Connection.UpgradeFromTakes the input buffer from the connection on upgrade.
This method is used to take any unconsumed input from a connection during an upgrade.
onUpgradeFrom in interface Connection.UpgradeFrompublic void onUpgradeTo(ByteBuffer buffer)
Connection.UpgradeToCallback method invoked when this connection is upgraded.
This must be called before Connection.onOpen().
onUpgradeTo in interface Connection.UpgradeTobuffer - An optional buffer that can contain prefilled data. Typically this
results from an upgrade of one protocol to the other where the old connection has buffered
data destined for the new connection. The new connection must take ownership of the buffer
and is responsible for returning it to the buffer poolpublic void onFlushed(long bytes)
throws IOException
WriteFlusher.ListenerInvoked when a WriteFlusher flushed 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 IOException to signal that the write
should fail, for example if the implementation enforces a minimum data rate.
onFlushed in interface WriteFlusher.Listenerbytes - the number of bytes flushedIOException - if the write should failpublic ByteBuffer getRequestBuffer()
public boolean isRequestBufferEmpty()
public void onFillable()
AbstractConnectionCallback method invoked when the endpoint is ready to be read.
onFillable in class AbstractConnectionAbstractConnection.fillInterested()public void onCompleted()
HttpTransportonCompleted in interface HttpTransportpublic void onOpen()
ConnectionCallback method invoked when this connection is opened.
Creators of the connection implementation are responsible for calling this method.
onOpen in interface ConnectiononOpen in class AbstractConnectionpublic void onClose()
ConnectionCallback method invoked when this connection is closed.
Creators of the connection implementation are responsible for calling this method.
onClose in interface ConnectiononClose in class AbstractConnectionpublic void send(MetaData.Response info, boolean head, ByteBuffer content, boolean lastContent, Callback callback)
HttpTransportsend in interface HttpTransportinfo - 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 onpublic void abort(Throwable failure)
HttpTransportThis 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
abort in interface HttpTransportfailure - the failure that caused the abort.public boolean isPushSupported()
isPushSupported in interface HttpTransportpublic void push(MetaData.Request request)
push in interface HttpTransportrequest - A request to use as the basis for generating a pushed response.public void asyncReadFillInterested()
public void blockingReadFillInterested()
public void blockingReadFailure(Throwable e)
public long getBytesIn()
getBytesIn in interface ConnectiongetBytesIn in class AbstractConnectionpublic long getBytesOut()
getBytesOut in interface ConnectiongetBytesOut in class AbstractConnectionpublic String toConnectionString()
toConnectionString in class AbstractConnectionCopyright © 2010 - 2020 Adobe. All Rights Reserved