org.apache.http.impl
Class AbstractHttpClientConnection

java.lang.Object
  extended by org.apache.http.impl.AbstractHttpClientConnection
All Implemented Interfaces:
HttpClientConnection, HttpConnection
Direct Known Subclasses:
SocketHttpClientConnection

public abstract class AbstractHttpClientConnection
extends java.lang.Object
implements HttpClientConnection

Abstract client-side HTTP connection capable of transmitting and receiving data using arbitrary HttpDataReceiver and HttpDataTransmitter

Since:
4.0
Version:
$Revision: 548056 $
Author:
Oleg Kalnichevski

Constructor Summary
AbstractHttpClientConnection()
           
 
Method Summary
protected abstract  void assertOpen()
           
protected  EntityDeserializer createEntityDeserializer()
           
protected  EntitySerializer createEntitySerializer()
           
protected  HttpResponseFactory createHttpResponseFactory()
           
protected  void doFlush()
           
 void flush()
          Writes out all pending buffered data over the open connection.
 HttpConnectionMetrics getMetrics()
          Returns a collection of connection metrcis
protected  void init(HttpDataReceiver datareceiver, HttpDataTransmitter datatransmitter, HttpParams params)
           
 boolean isResponseAvailable(int timeout)
          Checks if response data is available from the connection.
 boolean isStale()
          Checks whether this connection has gone down.
protected  void readResponseHeaders(HttpResponse response)
           
protected  HttpResponse readResponseStatusLine()
           
 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  void sendRequestHeaders(HttpRequest request)
           
protected  void sendRequestLine(HttpRequest request)
           
protected static boolean startsWithHTTP(CharArrayBuffer buffer)
          Tests if the string starts with 'HTTP' signature.
 
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

AbstractHttpClientConnection

public AbstractHttpClientConnection()
Method Detail

assertOpen

protected abstract void assertOpen()
                            throws java.lang.IllegalStateException
Throws:
java.lang.IllegalStateException

createEntityDeserializer

protected EntityDeserializer createEntityDeserializer()

createEntitySerializer

protected EntitySerializer createEntitySerializer()

createHttpResponseFactory

protected HttpResponseFactory createHttpResponseFactory()

init

protected void init(HttpDataReceiver datareceiver,
                    HttpDataTransmitter datatransmitter,
                    HttpParams params)

isResponseAvailable

public boolean isResponseAvailable(int timeout)
                            throws java.io.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:
java.io.IOException - if an error happens on the connection

sendRequestHeader

public void sendRequestHeader(HttpRequest request)
                       throws HttpException,
                              java.io.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
java.io.IOException

sendRequestEntity

public void sendRequestEntity(HttpEntityEnclosingRequest request)
                       throws HttpException,
                              java.io.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
java.io.IOException

doFlush

protected void doFlush()
                throws java.io.IOException
Throws:
java.io.IOException

flush

public void flush()
           throws java.io.IOException
Description copied from interface: HttpClientConnection
Writes out all pending buffered data over the open connection.

Specified by:
flush in interface HttpClientConnection
Throws:
java.io.IOException

sendRequestLine

protected void sendRequestLine(HttpRequest request)
                        throws HttpException,
                               java.io.IOException
Throws:
HttpException
java.io.IOException

sendRequestHeaders

protected void sendRequestHeaders(HttpRequest request)
                           throws HttpException,
                                  java.io.IOException
Throws:
HttpException
java.io.IOException

receiveResponseHeader

public HttpResponse receiveResponseHeader()
                                   throws HttpException,
                                          java.io.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
java.io.IOException

receiveResponseEntity

public void receiveResponseEntity(HttpResponse response)
                           throws HttpException,
                                  java.io.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
java.io.IOException

startsWithHTTP

protected static boolean startsWithHTTP(CharArrayBuffer buffer)
Tests if the string starts with 'HTTP' signature.

Parameters:
buffer - buffer to test
Returns:
true if the line starts with 'HTTP' signature, false otherwise.

readResponseStatusLine

protected HttpResponse readResponseStatusLine()
                                       throws HttpException,
                                              java.io.IOException
Throws:
HttpException
java.io.IOException

readResponseHeaders

protected void readResponseHeaders(HttpResponse response)
                            throws HttpException,
                                   java.io.IOException
Throws:
HttpException
java.io.IOException

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 metrcis

Specified by:
getMetrics in interface HttpConnection
Returns:
HttpConnectionMetrics


Copyright © 2005-2009 Apache Software Foundation. All Rights Reserved.