org.apache.http.impl

## Class DefaultBHttpClientConnection

- java.lang.Object
- - org.apache.http.impl.BHttpConnectionBase
  - - org.apache.http.impl.DefaultBHttpClientConnection

All Implemented Interfaces:
  Closeable, AutoCloseable, HttpClientConnection, HttpConnection, HttpInetConnection

    @NotThreadSafe
    public class DefaultBHttpClientConnection
    extends BHttpConnectionBase
    implements HttpClientConnection

Default implementation of `HttpClientConnection`.

Since:
  4.3

### Constructor Summary

Constructors
Constructor and Description
`DefaultBHttpClientConnection(int buffersize)`
`DefaultBHttpClientConnection(int buffersize, CharsetDecoder chardecoder, CharsetEncoder charencoder, MessageConstraints constraints)`

`DefaultBHttpClientConnection(int buffersize, int fragmentSizeHint, CharsetDecoder chardecoder, CharsetEncoder charencoder, MessageConstraints constraints, ContentLengthStrategy incomingContentStrategy, ContentLengthStrategy outgoingContentStrategy, HttpMessageWriterFactory<HttpRequest> requestWriterFactory, HttpMessageParserFactory<HttpResponse> responseParserFactory)`
Creates new instance of DefaultBHttpClientConnection.

### Method Summary

Methods
`void` `bind(Socket socket)` Binds this connection to the given `Socket`.
`void` `flush()` Writes out all pending buffered data over the open connection.
`boolean` `isResponseAvailable(int timeout)` Checks if response data is available from the connection.
`protected void` `onRequestSubmitted(HttpRequest request)`
`protected void` `onResponseReceived(HttpResponse response)`
`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.

### Methods inherited from class org.apache.http.impl.BHttpConnectionBase

`awaitInput, close, createInputStream, createOutputStream, doFlush, ensureOpen, getLocalAddress, getLocalPort, getMetrics, getRemoteAddress, getRemotePort, getSessionInputBuffer, getSessionOutputBuffer, getSocket, getSocketInputStream, getSocketOutputStream, getSocketTimeout, incrementRequestCount, incrementResponseCount, isOpen, isStale, prepareInput, prepareOutput, setSocketTimeout, shutdown, toString`

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait`

### Methods inherited from interface org.apache.http.HttpConnection

`close, getMetrics, getSocketTimeout, isOpen, isStale, setSocketTimeout, shutdown`

### Constructor Detail

#### DefaultBHttpClientConnection

    public DefaultBHttpClientConnection(int buffersize,
                                int fragmentSizeHint,
                                CharsetDecoder chardecoder,
                                CharsetEncoder charencoder,
                                MessageConstraints constraints,
                                ContentLengthStrategy incomingContentStrategy,
                                ContentLengthStrategy outgoingContentStrategy,
                                HttpMessageWriterFactory<HttpRequest> requestWriterFactory,
                                HttpMessageParserFactory<HttpResponse> responseParserFactory)

Creates new instance of DefaultBHttpClientConnection.

Parameters:
  `buffersize` - buffer size. Must be a positive number.
  `fragmentSizeHint` - fragment size hint.
  `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.
  `requestWriterFactory` - request writer factory. If `null` `DefaultHttpRequestWriterFactory.INSTANCE` will be used.
  `responseParserFactory` - response parser factory. If `null` `DefaultHttpResponseParserFactory.INSTANCE` will be used.

#### DefaultBHttpClientConnection

    public DefaultBHttpClientConnection(int buffersize,
                                CharsetDecoder chardecoder,
                                CharsetEncoder charencoder,
                                MessageConstraints constraints)

#### DefaultBHttpClientConnection

    public DefaultBHttpClientConnection(int buffersize)

### Method Detail

#### onResponseReceived

    protected void onResponseReceived(HttpResponse response)

#### onRequestSubmitted

    protected void onRequestSubmitted(HttpRequest request)

#### bind

    public void bind(Socket socket)
              throws IOException

Description copied from class: `BHttpConnectionBase`
Binds this connection to the given `Socket`. This socket will be used by the connection to send and receive data.

After this method's execution the connection status will be reported as open and the `BHttpConnectionBase.isOpen()` will return `true`.

Overrides:
  `bind` in class `BHttpConnectionBase`
Parameters:
  `socket` - the socket.
Throws:
  `IOException` - in case of an I/O error.

#### isResponseAvailable

    public boolean isResponseAvailable(int timeout)
                                throws IOException

Description copied from interface: `HttpClientConnection`
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.

Specified by:
  `isResponseAvailable` in interface `HttpClientConnection`
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` - if an error happens on the connection

#### sendRequestHeader

    public void sendRequestHeader(HttpRequest request)
                           throws HttpException,
                                  IOException

Description copied from interface: `HttpClientConnection`
Sends the request line and all headers over the connection.

Specified by:
  `sendRequestHeader` in interface `HttpClientConnection`
Parameters:
  `request` - the request whose headers to send.
Throws:
  `HttpException` - in case of HTTP protocol violation
  `IOException` - in case of an I/O error

#### sendRequestEntity

    public void sendRequestEntity(HttpEntityEnclosingRequest request)
                           throws HttpException,
                                  IOException

Description copied from interface: `HttpClientConnection`
Sends the request entity over the connection.

Specified by:
  `sendRequestEntity` in interface `HttpClientConnection`
Parameters:
  `request` - the request whose entity to send.
Throws:
  `HttpException` - in case of HTTP protocol violation
  `IOException` - in case of an I/O error

#### receiveResponseHeader

    public HttpResponse receiveResponseHeader()
                                       throws HttpException,
                                              IOException

Description copied from interface: `HttpClientConnection`
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.

Specified by:
  `receiveResponseHeader` in interface `HttpClientConnection`
Returns:
  a new HttpResponse object with status line and headers initialized.
Throws:
  `HttpException` - in case of HTTP protocol violation
  `IOException` - in case of an I/O error

#### receiveResponseEntity

    public void receiveResponseEntity(HttpResponse response)
                               throws HttpException,
                                      IOException

Description copied from interface: `HttpClientConnection`
Receives the next response entity available from this connection and attaches it to an existing HttpResponse object.

Specified by:
  `receiveResponseEntity` in interface `HttpClientConnection`
Parameters:
  `response` - the response to attach the entity to
Throws:
  `HttpException` - in case of HTTP protocol violation
  `IOException` - in case of an I/O error

#### flush

    public void flush()
               throws IOException

Description copied from interface: `HttpClientConnection`
Writes out all pending buffered data over the open connection.

Specified by:
  `flush` in interface `HttpClientConnection`
Throws:
  `IOException` - in case of an I/O error