@NotThreadSafe public class NHttpConnectionBase extends Object implements NHttpConnection, HttpInetConnection, SessionBufferStatus, SocketAccessor
NHttpConnection implementations
and implements functionality common to both client and server
HTTP connections.
The following parameters can be used to customize the behavior of this class:
| Modifier and Type | Field and Description |
|---|---|
protected HttpConnectionMetricsImpl |
connMetrics |
protected ContentDecoder |
contentDecoder |
protected ContentEncoder |
contentEncoder |
protected HttpContext |
context |
protected boolean |
hasBufferedInput |
protected boolean |
hasBufferedOutput |
protected SessionInputBufferImpl |
inbuf |
protected ContentLengthStrategy |
incomingContentStrategy |
protected HttpTransportMetricsImpl |
inTransportMetrics |
protected SessionOutputBufferImpl |
outbuf |
protected ContentLengthStrategy |
outgoingContentStrategy |
protected HttpTransportMetricsImpl |
outTransportMetrics |
protected SocketAddress |
remote |
protected HttpRequest |
request |
protected HttpResponse |
response |
protected IOSession |
session |
protected int |
status |
ACTIVE, CLOSED, CLOSING| Constructor and Description |
|---|
NHttpConnectionBase(IOSession session,
ByteBufferAllocator allocator,
HttpParams params)
Creates a new instance of this class given the underlying I/O session.
|
| Modifier and Type | Method and Description |
|---|---|
protected void |
assertNotClosed()
Assets if the connection is still open.
|
protected void |
bind(IOSession session)
Binds the connection to a different
IOSession. |
void |
close() |
protected HttpConnectionMetricsImpl |
createConnectionMetrics(HttpTransportMetrics inTransportMetric,
HttpTransportMetrics outTransportMetric) |
protected ContentDecoder |
createContentDecoder(long len,
ReadableByteChannel channel,
SessionInputBuffer buffer,
HttpTransportMetricsImpl metrics)
Factory method for
ContentDecoder instances. |
protected ContentEncoder |
createContentEncoder(long len,
WritableByteChannel channel,
SessionOutputBuffer buffer,
HttpTransportMetricsImpl metrics)
Factory method for
ContentEncoder instances. |
protected ContentLengthStrategy |
createIncomingContentStrategy() |
protected ContentLengthStrategy |
createOutgoingContentStrategy() |
protected HttpTransportMetricsImpl |
createTransportMetrics() |
HttpContext |
getContext()
Returns an HTTP execution context associated with this connection.
|
HttpRequest |
getHttpRequest()
Returns the current HTTP request if one is being received / transmitted.
|
HttpResponse |
getHttpResponse()
Returns the current HTTP response if one is being received / transmitted.
|
InetAddress |
getLocalAddress() |
int |
getLocalPort() |
HttpConnectionMetrics |
getMetrics() |
InetAddress |
getRemoteAddress() |
int |
getRemotePort() |
Socket |
getSocket()
Return the underlying socket
|
int |
getSocketTimeout() |
int |
getStatus()
Returns status of the connection:
|
boolean |
hasBufferedInput()
Determines if the session input buffer contains data.
|
boolean |
hasBufferedOutput()
Determines if the session output buffer contains data.
|
boolean |
isOpen() |
boolean |
isStale() |
protected HttpEntity |
prepareDecoder(HttpMessage message)
Initializes a specific
ContentDecoder implementation based on the
properties of the given HttpMessage and generates an instance of
HttpEntity matching the properties of the content decoder. |
protected void |
prepareEncoder(HttpMessage message)
Initializes a specific
ContentEncoder implementation based on the
properties of the given HttpMessage. |
void |
requestInput()
Requests event notifications to be triggered when the underlying
channel is ready for input operations.
|
void |
requestOutput()
Requests event notifications to be triggered when the underlying
channel is ready for output operations.
|
void |
setSocketTimeout(int timeout) |
void |
shutdown()
Shuts down the underlying channel.
|
void |
suspendInput()
Suspends event notifications about the underlying channel being
ready for input operations.
|
void |
suspendOutput()
Suspends event notifications about the underlying channel being
ready for output operations.
|
String |
toString() |
protected final ContentLengthStrategy incomingContentStrategy
protected final ContentLengthStrategy outgoingContentStrategy
protected final SessionInputBufferImpl inbuf
protected final SessionOutputBufferImpl outbuf
protected final HttpTransportMetricsImpl inTransportMetrics
protected final HttpTransportMetricsImpl outTransportMetrics
protected final HttpConnectionMetricsImpl connMetrics
protected HttpContext context
protected IOSession session
protected SocketAddress remote
protected volatile ContentDecoder contentDecoder
protected volatile boolean hasBufferedInput
protected volatile ContentEncoder contentEncoder
protected volatile boolean hasBufferedOutput
protected volatile HttpRequest request
protected volatile HttpResponse response
protected volatile int status
public NHttpConnectionBase(IOSession session, ByteBufferAllocator allocator, HttpParams params)
session - the underlying I/O session.allocator - byte buffer allocator.params - HTTP parameters.protected void bind(IOSession session)
IOSession. This may be necessary
when the underlying I/O session gets upgraded with SSL/TLS encryption.protected ContentLengthStrategy createIncomingContentStrategy()
protected ContentLengthStrategy createOutgoingContentStrategy()
protected HttpTransportMetricsImpl createTransportMetrics()
protected HttpConnectionMetricsImpl createConnectionMetrics(HttpTransportMetrics inTransportMetric, HttpTransportMetrics outTransportMetric)
public int getStatus()
NHttpConnection
NHttpConnection.ACTIVE: connection is active.
NHttpConnection.CLOSING: connection is being closed.
NHttpConnection.CLOSED: connection has been closed.
getStatus in interface NHttpConnectionpublic HttpContext getContext()
NHttpConnectiongetContext in interface NHttpConnectionpublic HttpRequest getHttpRequest()
NHttpConnectionnull.getHttpRequest in interface NHttpConnectionnull otherwise.public HttpResponse getHttpResponse()
NHttpConnectiongetHttpResponse in interface NHttpConnectionnull otherwise.public void requestInput()
IOControlrequestInput in interface IOControlpublic void requestOutput()
IOControlrequestOutput in interface IOControlpublic void suspendInput()
IOControlsuspendInput in interface IOControlpublic void suspendOutput()
IOControlsuspendOutput in interface IOControlprotected HttpEntity prepareDecoder(HttpMessage message) throws HttpException
ContentDecoder implementation based on the
properties of the given HttpMessage and generates an instance of
HttpEntity matching the properties of the content decoder.message - the HTTP message.HttpException - in case of an HTTP protocol violation.protected ContentDecoder createContentDecoder(long len, ReadableByteChannel channel, SessionInputBuffer buffer, HttpTransportMetricsImpl metrics)
ContentDecoder instances.len - content length, if known, ContentLengthStrategy.CHUNKED or
ContentLengthStrategy.IDENTITY, if unknown.channel - the session channel.buffer - the session buffer.metrics - transport metrics.protected void prepareEncoder(HttpMessage message) throws HttpException
ContentEncoder implementation based on the
properties of the given HttpMessage.message - the HTTP message.HttpException - in case of an HTTP protocol violation.protected ContentEncoder createContentEncoder(long len, WritableByteChannel channel, SessionOutputBuffer buffer, HttpTransportMetricsImpl metrics)
ContentEncoder instances.len - content length, if known, ContentLengthStrategy.CHUNKED or
ContentLengthStrategy.IDENTITY, if unknown.channel - the session channel.buffer - the session buffer.metrics - transport metrics.public boolean hasBufferedInput()
SessionBufferStatushasBufferedInput in interface SessionBufferStatustrue if the session input buffer contains data,
false otherwise.public boolean hasBufferedOutput()
SessionBufferStatushasBufferedOutput in interface SessionBufferStatustrue if the session output buffer contains data,
false otherwise.protected void assertNotClosed()
throws ConnectionClosedException
ConnectionClosedException - in case the connection has already
been closed.public void close()
throws IOException
close in interface Closeableclose in interface AutoCloseableclose in interface HttpConnectionIOExceptionpublic boolean isOpen()
isOpen in interface HttpConnectionpublic boolean isStale()
isStale in interface HttpConnectionpublic InetAddress getLocalAddress()
getLocalAddress in interface HttpInetConnectionpublic int getLocalPort()
getLocalPort in interface HttpInetConnectionpublic InetAddress getRemoteAddress()
getRemoteAddress in interface HttpInetConnectionpublic int getRemotePort()
getRemotePort in interface HttpInetConnectionpublic void setSocketTimeout(int timeout)
setSocketTimeout in interface HttpConnectionpublic int getSocketTimeout()
getSocketTimeout in interface HttpConnectionpublic void shutdown()
throws IOException
IOControlshutdown in interface HttpConnectionshutdown in interface IOControlIOExceptionpublic HttpConnectionMetrics getMetrics()
getMetrics in interface HttpConnectionpublic Socket getSocket()
SocketAccessorgetSocket in interface SocketAccessornull.Copyright © 2005–2013 The Apache Software Foundation. All rights reserved.