public abstract class

AbstractHttpClientConnection

extends Object
implements HttpClientConnection
java.lang.Object
   ↳ org.apache.http.impl.AbstractHttpClientConnection
Known Direct Subclasses
Known Indirect Subclasses

Class Overview

Abstract client-side HTTP connection capable of transmitting and receiving data using arbitrary SessionInputBuffer and SessionOutputBuffer implementations.

The following parameters can be used to customize the behavior of this class:

Summary

Public Constructors
AbstractHttpClientConnection()
Creates an instance of this class.
Public Methods
void flush()
Writes out all pending buffered data over the open connection.
HttpConnectionMetrics getMetrics()
Returns a collection of connection metrics.
boolean isResponseAvailable(int timeout)
Checks if response data is available from the connection.
boolean isStale()
Checks whether this connection has gone down.
void receiveResponseEntity(HttpResponse response)
Receives the next response entity available from this connection and attaches it to an existing HttpResponse object.
HttpResponse receiveResponseHeader()
Receives the request line and headers of the next response available from this connection.
void sendRequestEntity(HttpEntityEnclosingRequest request)
Sends the request entity over the connection.
void sendRequestHeader(HttpRequest request)
Sends the request line and all headers over the connection.
Protected Methods
abstract void assertOpen()
Asserts if the connection is open.
HttpConnectionMetricsImpl createConnectionMetrics(HttpTransportMetrics inTransportMetric, HttpTransportMetrics outTransportMetric)
EntityDeserializer createEntityDeserializer()
Creates an instance of EntityDeserializer with the LaxContentLengthStrategy implementation to be used for de-serializing entities received over this connection.
EntitySerializer createEntitySerializer()
Creates an instance of EntitySerializer with the StrictContentLengthStrategy implementation to be used for serializing HTTP entities sent over this connection.
HttpResponseFactory createHttpResponseFactory()
Creates an instance of DefaultHttpResponseFactory to be used for creating HttpResponse objects received by over this connection.
HttpMessageWriter createRequestWriter(SessionOutputBuffer buffer, HttpParams params)
Creates an instance of HttpMessageWriter to be used for writing out HTTP requests sent over this connection.
HttpMessageParser createResponseParser(SessionInputBuffer buffer, HttpResponseFactory responseFactory, HttpParams params)
Creates an instance of HttpMessageParser to be used for parsing HTTP responses received over this connection.
void doFlush()
void init(SessionInputBuffer inbuffer, SessionOutputBuffer outbuffer, HttpParams params)
Initializes this connection object with SessionInputBuffer and SessionOutputBuffer instances to be used for sending and receiving data.
boolean isEof()
[Expand]
Inherited Methods
From class java.lang.Object
From interface org.apache.http.HttpClientConnection
From interface org.apache.http.HttpConnection

Public Constructors

public AbstractHttpClientConnection ()

Creates an instance of this class.

This constructor will invoke createEntityDeserializer() and createEntitySerializer() methods in order to initialize HTTP entity serializer and deserializer implementations for this connection.

Public Methods

public void flush ()

Writes out all pending buffered data over the open connection.

Throws
IOException

public HttpConnectionMetrics getMetrics ()

Returns a collection of connection metrics.

Returns
  • HttpConnectionMetrics

public boolean isResponseAvailable (int timeout)

Checks if response data is available from the connection. May wait for the specified time until some data becomes available. Note that some implementations may completely ignore the timeout parameter.

Parameters
timeout the maximum time in milliseconds to wait for data
Returns
  • true if data is available; false if there was no data available even after waiting for timeout milliseconds.
Throws
IOException

public boolean isStale ()

Checks whether this connection has gone down. Network connections may get closed during some time of inactivity for several reasons. The next time a read is attempted on such a connection it will throw an IOException. This method tries to alleviate this inconvenience by trying to find out if a connection is still usable. Implementations may do that by attempting a read with a very small timeout. Thus this method may block for a small amount of time before returning a result. It is therefore an expensive operation.

Returns
  • true if attempts to use this connection are likely to succeed, or false if they are likely to fail and this connection should be closed

public void receiveResponseEntity (HttpResponse response)

Receives the next response entity available from this connection and attaches it to an existing HttpResponse object.

Parameters
response the response to attach the entity to

public HttpResponse receiveResponseHeader ()

Receives the request line and headers of the next response available from this connection. The caller should examine the HttpResponse object to find out if it should try to receive a response entity as well.

Returns
  • a new HttpResponse object with status line and headers initialized.

public void sendRequestEntity (HttpEntityEnclosingRequest request)

Sends the request entity over the connection.

Parameters
request the request whose entity to send.

public void sendRequestHeader (HttpRequest request)

Sends the request line and all headers over the connection.

Parameters
request the request whose headers to send.

Protected Methods

protected abstract void assertOpen ()

Asserts if the connection is open.

Throws
IllegalStateException if the connection is not open.

protected HttpConnectionMetricsImpl createConnectionMetrics (HttpTransportMetrics inTransportMetric, HttpTransportMetrics outTransportMetric)

protected EntityDeserializer createEntityDeserializer ()

Creates an instance of EntityDeserializer with the LaxContentLengthStrategy implementation to be used for de-serializing entities received over this connection.

This method can be overridden in a super class in order to create instances of EntityDeserializer using a custom ContentLengthStrategy.

Returns
  • HTTP entity deserializer

protected EntitySerializer createEntitySerializer ()

Creates an instance of EntitySerializer with the StrictContentLengthStrategy implementation to be used for serializing HTTP entities sent over this connection.

This method can be overridden in a super class in order to create instances of EntitySerializer using a custom ContentLengthStrategy.

Returns
  • HTTP entity serialzier.

protected HttpResponseFactory createHttpResponseFactory ()

Creates an instance of DefaultHttpResponseFactory to be used for creating HttpResponse objects received by over this connection.

This method can be overridden in a super class in order to provide a different implementation of the HttpResponseFactory interface.

Returns
  • HTTP response factory.

protected HttpMessageWriter createRequestWriter (SessionOutputBuffer buffer, HttpParams params)

Creates an instance of HttpMessageWriter to be used for writing out HTTP requests sent over this connection.

This method can be overridden in a super class in order to provide a different implementation of the HttpMessageWriter interface or to pass a different implementation of LineFormatter to the the default implementation HttpRequestWriter.

Parameters
buffer the session output buffer
params HTTP parameters
Returns
  • HTTP message writer

protected HttpMessageParser createResponseParser (SessionInputBuffer buffer, HttpResponseFactory responseFactory, HttpParams params)

Creates an instance of HttpMessageParser to be used for parsing HTTP responses received over this connection.

This method can be overridden in a super class in order to provide a different implementation of the HttpMessageParser interface or to pass a different implementation of LineParser to the the default implementation HttpResponseParser.

Parameters
buffer the session input buffer.
responseFactory the HTTP response factory.
params HTTP parameters.
Returns
  • HTTP message parser.

protected void doFlush ()

Throws
IOException

protected void init (SessionInputBuffer inbuffer, SessionOutputBuffer outbuffer, HttpParams params)

Initializes this connection object with SessionInputBuffer and SessionOutputBuffer instances to be used for sending and receiving data. These session buffers can be bound to any arbitrary physical output medium.

This method will invoke createHttpResponseFactory(), createRequestWriter(SessionOutputBuffer, HttpParams) and createResponseParser(SessionInputBuffer, HttpResponseFactory, HttpParams) methods to initialize HTTP request writer and response parser for this connection.

Parameters
inbuffer the session input buffer.
outbuffer the session output buffer.
params HTTP parameters.

protected boolean isEof ()