## org.apache.http.impl
Class AbstractHttpServerConnection

    java.lang.Object
      org.apache.http.impl.AbstractHttpServerConnection

All Implemented Interfaces:
  Closeable, HttpConnection, HttpServerConnection

Direct Known Subclasses:
  SocketHttpServerConnection

    @NotThreadSafe
    public abstract class AbstractHttpServerConnection

extends Object
implements HttpServerConnection

Abstract server-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:

- `CoreProtocolPNames.STRICT_TRANSFER_ENCODING`
- `CoreConnectionPNames.MAX_HEADER_COUNT`
- `CoreConnectionPNames.MAX_LINE_LENGTH`

Since:
  4.0

Constructor Summary
`AbstractHttpServerConnection()` Creates an instance of this class.

Method Summary
`protected abstract void` `assertOpen()` Asserts if the connection is 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.
`protected EntitySerializer` `createEntitySerializer()` Creates an instance of `EntitySerializer` with the `StrictContentLengthStrategy` implementation to be used for serializing HTTP entities sent over this connection.
`protected HttpRequestFactory` `createHttpRequestFactory()` Creates an instance of `DefaultHttpRequestFactory` to be used for creating `HttpRequest` objects received by over this connection.
`protected HttpMessageParser<HttpRequest>` `createRequestParser(SessionInputBuffer buffer, HttpRequestFactory requestFactory, HttpParams params)` Creates an instance of `HttpMessageParser` to be used for parsing HTTP requests received over this connection.
`protected HttpMessageWriter<HttpResponse>` `createResponseWriter(SessionOutputBuffer buffer, HttpParams params)` Creates an instance of `HttpMessageWriter` to be used for writing out HTTP responses sent over this connection.
`protected void` `doFlush()`
`void` `flush()` Sends all pending buffered data over this connection.
`HttpConnectionMetrics` `getMetrics()` Returns a collection of connection metrics.
`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.
`protected boolean` `isEof()`
`boolean` `isStale()` Checks whether this connection has gone down.
`void` `receiveRequestEntity(HttpEntityEnclosingRequest request)` Receives the next request entity available from this connection and attaches it to an existing request.
`HttpRequest` `receiveRequestHeader()` Receives the request line and all headers available from this connection.
`void` `sendResponseEntity(HttpResponse response)` Sends the response entity of a response over this connection.
`void` `sendResponseHeader(HttpResponse response)` Sends the response line and headers of a response over this connection.

Methods inherited from class java.lang.Object
`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

Methods inherited from interface org.apache.http.HttpConnection
`close, getSocketTimeout, isOpen, setSocketTimeout, shutdown`

Constructor Detail

### AbstractHttpServerConnection

    public AbstractHttpServerConnection()

  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.

Method Detail

### assertOpen

    protected abstract void assertOpen()
                                throws IllegalStateException

  Asserts if the connection is open.

  Throws:
    `IllegalStateException` - if the connection is not open.

### createEntityDeserializer

    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

### createEntitySerializer

    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.

### createHttpRequestFactory

    protected HttpRequestFactory createHttpRequestFactory()

  Creates an instance of `DefaultHttpRequestFactory` to be used for creating `HttpRequest` objects received by over this connection.

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

  Returns:
    HTTP request factory.

### createRequestParser

    protected HttpMessageParser<HttpRequest> createRequestParser(SessionInputBuffer buffer,
                                                                 HttpRequestFactory requestFactory,
                                                                 HttpParams params)

  Creates an instance of `HttpMessageParser` to be used for parsing HTTP requests 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 the `LineParser` to the the `DefaultHttpRequestParser` constructor.

  Parameters:
    `buffer` - the session input buffer.
    `requestFactory` - the HTTP request factory.
    `params` - HTTP parameters.
  Returns:
    HTTP message parser.

### createResponseWriter

    protected HttpMessageWriter<HttpResponse> createResponseWriter(SessionOutputBuffer buffer,
                                                                   HttpParams params)

  Creates an instance of `HttpMessageWriter` to be used for writing out HTTP responses 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 `HttpResponseWriter`.

  Parameters:
    `buffer` - the session output buffer
    `params` - HTTP parameters
  Returns:
    HTTP message writer

### createConnectionMetrics

    protected HttpConnectionMetricsImpl createConnectionMetrics(HttpTransportMetrics inTransportMetric,
                                                                HttpTransportMetrics outTransportMetric)

  Since:
    4.1

### init

    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 `createHttpRequestFactory()`, `createRequestParser(SessionInputBuffer, HttpRequestFactory, HttpParams)` and `createResponseWriter(SessionOutputBuffer, HttpParams)` methods to initialize HTTP request parser and response writer for this connection.

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

### receiveRequestHeader

    public HttpRequest receiveRequestHeader()
                                     throws HttpException,
                                            IOException

  Description copied from interface: `HttpServerConnection`
  Receives the request line and all headers available from this connection. The caller should examine the returned request and decide if to receive a request entity as well.

  Specified by:
    `receiveRequestHeader` in interface `HttpServerConnection`
  Returns:
    a new HttpRequest object whose request line and headers are initialized.
  Throws:
    `HttpException` - in case of HTTP protocol violation
    `IOException` - in case of an I/O error

### receiveRequestEntity

    public void receiveRequestEntity(HttpEntityEnclosingRequest request)
                              throws HttpException,
                                     IOException

  Description copied from interface: `HttpServerConnection`
  Receives the next request entity available from this connection and attaches it to an existing request.

  Specified by:
    `receiveRequestEntity` in interface `HttpServerConnection`
  Parameters:
    `request` - the request to attach the entity to.
  Throws:
    `HttpException` - in case of HTTP protocol violation
    `IOException` - in case of an I/O error

### doFlush

    protected void doFlush()
                    throws IOException

  Throws:
    `IOException`

### flush

    public void flush()
               throws IOException

  Description copied from interface: `HttpServerConnection`
  Sends all pending buffered data over this connection.

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

### sendResponseHeader

    public void sendResponseHeader(HttpResponse response)
                            throws HttpException,
                                   IOException

  Description copied from interface: `HttpServerConnection`
  Sends the response line and headers of a response over this connection.

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

### sendResponseEntity

    public void sendResponseEntity(HttpResponse response)
                            throws HttpException,
                                   IOException

  Description copied from interface: `HttpServerConnection`
  Sends the response entity of a response over this connection.

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

### isEof

    protected boolean isEof()

### isStale

    public boolean isStale()

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

  Specified by:
    `isStale` in interface `HttpConnection`
  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

### getMetrics

    public HttpConnectionMetrics getMetrics()

  Description copied from interface: `HttpConnection`
  Returns a collection of connection metrics.

  Specified by:
    `getMetrics` in interface `HttpConnection`
  Returns:
    HttpConnectionMetrics

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