org.apache.http.impl.nio
Class NHttpConnectionBase

java.lang.Object
  extended by org.apache.http.impl.nio.NHttpConnectionBase
All Implemented Interfaces:
Closeable, HttpConnection, HttpInetConnection, IOControl, NHttpConnection, SessionBufferStatus, SocketAccessor
Direct Known Subclasses:
DefaultNHttpClientConnection, DefaultNHttpServerConnection

@NotThreadSafe
public class NHttpConnectionBase
extends Object
implements NHttpConnection, HttpInetConnection, SessionBufferStatus, SocketAccessor

This class serves as a base for all 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:

Since:
4.0

Field Summary
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
           
 
Fields inherited from interface org.apache.http.nio.NHttpConnection
ACTIVE, CLOSED, CLOSING
 
Constructor Summary
NHttpConnectionBase(IOSession session, ByteBufferAllocator allocator, HttpParams params)
          Creates a new instance of this class given the underlying I/O session.
 
Method Summary
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()
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

incomingContentStrategy

protected final ContentLengthStrategy incomingContentStrategy

outgoingContentStrategy

protected final ContentLengthStrategy outgoingContentStrategy

inbuf

protected final SessionInputBufferImpl inbuf

outbuf

protected final SessionOutputBufferImpl outbuf

inTransportMetrics

protected final HttpTransportMetricsImpl inTransportMetrics

outTransportMetrics

protected final HttpTransportMetricsImpl outTransportMetrics

connMetrics

protected final HttpConnectionMetricsImpl connMetrics

context

protected HttpContext context

session

protected IOSession session

remote

protected SocketAddress remote

contentDecoder

protected volatile ContentDecoder contentDecoder

hasBufferedInput

protected volatile boolean hasBufferedInput

contentEncoder

protected volatile ContentEncoder contentEncoder

hasBufferedOutput

protected volatile boolean hasBufferedOutput

request

protected volatile HttpRequest request

response

protected volatile HttpResponse response

status

protected volatile int status
Constructor Detail

NHttpConnectionBase

public NHttpConnectionBase(IOSession session,
                           ByteBufferAllocator allocator,
                           HttpParams params)
Creates a new instance of this class given the underlying I/O session.

Parameters:
session - the underlying I/O session.
allocator - byte buffer allocator.
params - HTTP parameters.
Method Detail

bind

protected void bind(IOSession session)
Binds the connection to a different IOSession. This may be necessary when the underlying I/O session gets upgraded with SSL/TLS encryption.

Since:
4.2

createIncomingContentStrategy

protected ContentLengthStrategy createIncomingContentStrategy()
Since:
4.2

createOutgoingContentStrategy

protected ContentLengthStrategy createOutgoingContentStrategy()
Since:
4.2

createTransportMetrics

protected HttpTransportMetricsImpl createTransportMetrics()
Since:
4.1

createConnectionMetrics

protected HttpConnectionMetricsImpl createConnectionMetrics(HttpTransportMetrics inTransportMetric,
                                                            HttpTransportMetrics outTransportMetric)
Since:
4.1

getStatus

public int getStatus()
Description copied from interface: NHttpConnection
Returns status of the connection:

NHttpConnection.ACTIVE: connection is active.

NHttpConnection.CLOSING: connection is being closed.

NHttpConnection.CLOSED: connection has been closed.

Specified by:
getStatus in interface NHttpConnection
Returns:
connection status.

getContext

public HttpContext getContext()
Description copied from interface: NHttpConnection
Returns an HTTP execution context associated with this connection.

Specified by:
getContext in interface NHttpConnection
Returns:
HTTP context

getHttpRequest

public HttpRequest getHttpRequest()
Description copied from interface: NHttpConnection
Returns the current HTTP request if one is being received / transmitted. Otherwise returns null.

Specified by:
getHttpRequest in interface NHttpConnection
Returns:
HTTP request, if available, null otherwise.

getHttpResponse

public HttpResponse getHttpResponse()
Description copied from interface: NHttpConnection
Returns the current HTTP response if one is being received / transmitted. Otherwise returns null.

Specified by:
getHttpResponse in interface NHttpConnection
Returns:
HTTP response, if available, null otherwise.

requestInput

public void requestInput()
Description copied from interface: IOControl
Requests event notifications to be triggered when the underlying channel is ready for input operations.

Specified by:
requestInput in interface IOControl

requestOutput

public void requestOutput()
Description copied from interface: IOControl
Requests event notifications to be triggered when the underlying channel is ready for output operations.

Specified by:
requestOutput in interface IOControl

suspendInput

public void suspendInput()
Description copied from interface: IOControl
Suspends event notifications about the underlying channel being ready for input operations.

Specified by:
suspendInput in interface IOControl

suspendOutput

public void suspendOutput()
Description copied from interface: IOControl
Suspends event notifications about the underlying channel being ready for output operations.

Specified by:
suspendOutput in interface IOControl

prepareDecoder

protected HttpEntity prepareDecoder(HttpMessage message)
                             throws HttpException
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.

Parameters:
message - the HTTP message.
Returns:
HTTP entity.
Throws:
HttpException - in case of an HTTP protocol violation.

createContentDecoder

protected ContentDecoder createContentDecoder(long len,
                                              ReadableByteChannel channel,
                                              SessionInputBuffer buffer,
                                              HttpTransportMetricsImpl metrics)
Factory method for ContentDecoder instances.

Parameters:
len - content length, if known, ContentLengthStrategy.CHUNKED or ContentLengthStrategy.IDENTITY, if unknown.
channel - the session channel.
buffer - the session buffer.
metrics - transport metrics.
Returns:
content decoder.
Since:
4.1

prepareEncoder

protected void prepareEncoder(HttpMessage message)
                       throws HttpException
Initializes a specific ContentEncoder implementation based on the properties of the given HttpMessage.

Parameters:
message - the HTTP message.
Throws:
HttpException - in case of an HTTP protocol violation.

createContentEncoder

protected ContentEncoder createContentEncoder(long len,
                                              WritableByteChannel channel,
                                              SessionOutputBuffer buffer,
                                              HttpTransportMetricsImpl metrics)
Factory method for ContentEncoder instances.

Parameters:
len - content length, if known, ContentLengthStrategy.CHUNKED or ContentLengthStrategy.IDENTITY, if unknown.
channel - the session channel.
buffer - the session buffer.
metrics - transport metrics.
Returns:
content encoder.
Since:
4.1

hasBufferedInput

public boolean hasBufferedInput()
Description copied from interface: SessionBufferStatus
Determines if the session input buffer contains data.

Specified by:
hasBufferedInput in interface SessionBufferStatus
Returns:
true if the session input buffer contains data, false otherwise.

hasBufferedOutput

public boolean hasBufferedOutput()
Description copied from interface: SessionBufferStatus
Determines if the session output buffer contains data.

Specified by:
hasBufferedOutput in interface SessionBufferStatus
Returns:
true if the session output buffer contains data, false otherwise.

assertNotClosed

protected void assertNotClosed()
                        throws ConnectionClosedException
Assets if the connection is still open.

Throws:
ConnectionClosedException - in case the connection has already been closed.

close

public void close()
           throws IOException
Specified by:
close in interface Closeable
Specified by:
close in interface HttpConnection
Throws:
IOException

isOpen

public boolean isOpen()
Specified by:
isOpen in interface HttpConnection

isStale

public boolean isStale()
Specified by:
isStale in interface HttpConnection

getLocalAddress

public InetAddress getLocalAddress()
Specified by:
getLocalAddress in interface HttpInetConnection

getLocalPort

public int getLocalPort()
Specified by:
getLocalPort in interface HttpInetConnection

getRemoteAddress

public InetAddress getRemoteAddress()
Specified by:
getRemoteAddress in interface HttpInetConnection

getRemotePort

public int getRemotePort()
Specified by:
getRemotePort in interface HttpInetConnection

setSocketTimeout

public void setSocketTimeout(int timeout)
Specified by:
setSocketTimeout in interface HttpConnection

getSocketTimeout

public int getSocketTimeout()
Specified by:
getSocketTimeout in interface HttpConnection

shutdown

public void shutdown()
              throws IOException
Description copied from interface: IOControl
Shuts down the underlying channel.

Specified by:
shutdown in interface HttpConnection
Specified by:
shutdown in interface IOControl
Throws:
IOException

getMetrics

public HttpConnectionMetrics getMetrics()
Specified by:
getMetrics in interface HttpConnection

toString

public String toString()
Overrides:
toString in class Object

getSocket

public Socket getSocket()
Description copied from interface: SocketAccessor
Return the underlying socket

Specified by:
getSocket in interface SocketAccessor
Returns:
- the underlying Socket, may be null.


Copyright © 2005-2013 The Apache Software Foundation. All Rights Reserved.