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

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

This class serves as a base for all NHttpConnection implementations and provides functionality common to both client and server HTTP connections.

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)
          Deprecated. (4.3) use NHttpConnectionBase(IOSession, int, int, ByteBufferAllocator, CharsetDecoder, CharsetEncoder, ContentLengthStrategy, ContentLengthStrategy)
protected NHttpConnectionBase(IOSession session, int bufferSize, int fragmentSizeHint, ByteBufferAllocator allocator, CharsetDecoder charDecoder, CharsetEncoder charEncoder, ContentLengthStrategy incomingContentStrategy, ContentLengthStrategy outgoingContentStrategy)
          Creates new instance NHttpConnectionBase given the underlying I/O session.
protected NHttpConnectionBase(IOSession session, int bufferSize, int fragmentSizeHint, ByteBufferAllocator allocator, CharsetDecoder charDecoder, CharsetEncoder charEncoder, MessageConstraints constraints, ContentLengthStrategy incomingContentStrategy, ContentLengthStrategy outgoingContentStrategy)
          Creates new instance NHttpConnectionBase 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)
          Deprecated. (4.3) use decorator to add additional metrics.
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()
          Deprecated. (4.3) use constructor.
protected  ContentLengthStrategy createOutgoingContentStrategy()
          Deprecated. (4.3) use constructor.
protected  HttpTransportMetricsImpl createTransportMetrics()
          Deprecated. (4.3) no longer used.
 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

@Deprecated
public NHttpConnectionBase(IOSession session,
                                      ByteBufferAllocator allocator,
                                      HttpParams params)
Deprecated. (4.3) use NHttpConnectionBase(IOSession, int, int, ByteBufferAllocator, CharsetDecoder, CharsetEncoder, ContentLengthStrategy, ContentLengthStrategy)

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.

NHttpConnectionBase

protected NHttpConnectionBase(IOSession session,
                              int bufferSize,
                              int fragmentSizeHint,
                              ByteBufferAllocator allocator,
                              CharsetDecoder charDecoder,
                              CharsetEncoder charEncoder,
                              MessageConstraints constraints,
                              ContentLengthStrategy incomingContentStrategy,
                              ContentLengthStrategy outgoingContentStrategy)
Creates new instance NHttpConnectionBase given the underlying I/O session.

Parameters:
session - the underlying I/O session.
bufferSize - buffer size. Must be a positive number.
fragmentSizeHint - fragment size hint.
allocator - memory allocator. If null HeapByteBufferAllocator.INSTANCE will be used.
charDecoder - decoder to be used for decoding HTTP protocol elements. If null simple type cast will be used for byte to char conversion.
charEncoder - encoder to be used for encoding HTTP protocol elements. If null simple type cast will be used for char to byte conversion.
constraints - Message constraints. If null MessageConstraints.DEFAULT will be used.
incomingContentStrategy - incoming content length strategy. If null LaxContentLengthStrategy.INSTANCE will be used.
outgoingContentStrategy - outgoing content length strategy. If null StrictContentLengthStrategy.INSTANCE will be used.
Since:
4.4

NHttpConnectionBase

protected NHttpConnectionBase(IOSession session,
                              int bufferSize,
                              int fragmentSizeHint,
                              ByteBufferAllocator allocator,
                              CharsetDecoder charDecoder,
                              CharsetEncoder charEncoder,
                              ContentLengthStrategy incomingContentStrategy,
                              ContentLengthStrategy outgoingContentStrategy)
Creates new instance NHttpConnectionBase given the underlying I/O session.

Parameters:
session - the underlying I/O session.
bufferSize - buffer size. Must be a positive number.
fragmentSizeHint - fragment size hint.
allocator - memory allocator. If null HeapByteBufferAllocator.INSTANCE will be used.
charDecoder - decoder to be used for decoding HTTP protocol elements. If null simple type cast will be used for byte to char conversion.
charEncoder - encoder to be used for encoding HTTP protocol elements. If null simple type cast will be used for char to byte conversion.
incomingContentStrategy - incoming content length strategy. If null LaxContentLengthStrategy.INSTANCE will be used.
outgoingContentStrategy - outgoing content length strategy. If null StrictContentLengthStrategy.INSTANCE will be used.
Since:
4.3
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

@Deprecated
protected ContentLengthStrategy createIncomingContentStrategy()
Deprecated. (4.3) use constructor.

Since:
4.2

createOutgoingContentStrategy

@Deprecated
protected ContentLengthStrategy createOutgoingContentStrategy()
Deprecated. (4.3) use constructor.

Since:
4.2

createTransportMetrics

@Deprecated
protected HttpTransportMetricsImpl createTransportMetrics()
Deprecated. (4.3) no longer used.

Since:
4.1

createConnectionMetrics

@Deprecated
protected HttpConnectionMetricsImpl createConnectionMetrics(HttpTransportMetrics inTransportMetric,
                                                                       HttpTransportMetrics outTransportMetric)
Deprecated. (4.3) use decorator to add additional metrics.

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 - in an error occurs

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–2021 The Apache Software Foundation. All rights reserved.