Package org.apache.http.impl
Class BHttpConnectionBase
java.lang.Object
org.apache.http.impl.BHttpConnectionBase
- All Implemented Interfaces:
Closeable
,AutoCloseable
,HttpConnection
,HttpInetConnection
- Direct Known Subclasses:
DefaultBHttpClientConnection
,DefaultBHttpServerConnection
This class serves as a base for all
HttpConnection
implementations
and provides functionality common to both client and server HTTP connections.- Since:
- 4.0
-
Field Summary
FieldsModifier and TypeFieldDescriptionprivate final HttpConnectionMetricsImpl
private final SessionInputBufferImpl
private final ContentLengthStrategy
private final MessageConstraints
private final SessionOutputBufferImpl
private final ContentLengthStrategy
private final AtomicReference
<Socket> -
Constructor Summary
ConstructorsModifierConstructorDescriptionprotected
BHttpConnectionBase
(int bufferSize, int fragmentSizeHint, CharsetDecoder charDecoder, CharsetEncoder charEncoder, MessageConstraints messageConstraints, ContentLengthStrategy incomingContentStrategy, ContentLengthStrategy outgoingContentStrategy) Creates new instance of BHttpConnectionBase. -
Method Summary
Modifier and TypeMethodDescriptionprotected boolean
awaitInput
(int timeout) protected void
Binds this connection to the givenSocket
.void
close()
Closes this connection gracefully.protected InputStream
createInputStream
(long len, SessionInputBuffer inBuffer) protected OutputStream
createOutputStream
(long len, SessionOutputBuffer outbuffer) protected void
doFlush()
protected void
private int
fillInputBuffer
(int timeout) int
Returns a collection of connection metrics.int
protected SessionInputBuffer
protected SessionOutputBuffer
protected Socket
protected InputStream
getSocketInputStream
(Socket socket) protected OutputStream
getSocketOutputStream
(Socket socket) int
Returns the socket timeout value.protected void
protected void
boolean
isOpen()
Checks if this connection is open.boolean
isStale()
Checks whether this connection has gone down.protected HttpEntity
prepareInput
(HttpMessage message) protected OutputStream
prepareOutput
(HttpMessage message) void
setSocketTimeout
(int timeout) Sets the socket timeout value.void
shutdown()
Force-closes this connection.toString()
-
Field Details
-
inBuffer
-
outbuffer
-
messageConstraints
-
connMetrics
-
incomingContentStrategy
-
outgoingContentStrategy
-
socketHolder
-
-
Constructor Details
-
BHttpConnectionBase
protected BHttpConnectionBase(int bufferSize, int fragmentSizeHint, CharsetDecoder charDecoder, CharsetEncoder charEncoder, MessageConstraints messageConstraints, ContentLengthStrategy incomingContentStrategy, ContentLengthStrategy outgoingContentStrategy) Creates new instance of BHttpConnectionBase.- Parameters:
bufferSize
- buffer size. Must be a positive number.fragmentSizeHint
- fragment size hint.charDecoder
- decoder to be used for decoding HTTP protocol elements. Ifnull
simple type cast will be used for byte to char conversion.charEncoder
- encoder to be used for encoding HTTP protocol elements. Ifnull
simple type cast will be used for char to byte conversion.messageConstraints
- Message constraints. Ifnull
MessageConstraints.DEFAULT
will be used.incomingContentStrategy
- incoming content length strategy. Ifnull
LaxContentLengthStrategy.INSTANCE
will be used.outgoingContentStrategy
- outgoing content length strategy. Ifnull
StrictContentLengthStrategy.INSTANCE
will be used.
-
-
Method Details
-
ensureOpen
- Throws:
IOException
-
getSocketInputStream
- Throws:
IOException
-
getSocketOutputStream
- Throws:
IOException
-
bind
Binds this connection to the givenSocket
. 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
isOpen()
will returntrue
.- Parameters:
socket
- the socket.- Throws:
IOException
- in case of an I/O error.
-
getSessionInputBuffer
-
getSessionOutputBuffer
-
doFlush
- Throws:
IOException
-
isOpen
public boolean isOpen()Description copied from interface:HttpConnection
Checks if this connection is open.- Specified by:
isOpen
in interfaceHttpConnection
- Returns:
- true if it is open, false if it is closed.
-
getSocket
-
createOutputStream
-
prepareOutput
- Throws:
HttpException
-
createInputStream
-
prepareInput
- Throws:
HttpException
-
getLocalAddress
- Specified by:
getLocalAddress
in interfaceHttpInetConnection
-
getLocalPort
public int getLocalPort()- Specified by:
getLocalPort
in interfaceHttpInetConnection
-
getRemoteAddress
- Specified by:
getRemoteAddress
in interfaceHttpInetConnection
-
getRemotePort
public int getRemotePort()- Specified by:
getRemotePort
in interfaceHttpInetConnection
-
setSocketTimeout
public void setSocketTimeout(int timeout) Description copied from interface:HttpConnection
Sets the socket timeout value.- Specified by:
setSocketTimeout
in interfaceHttpConnection
- Parameters:
timeout
- timeout value in milliseconds
-
getSocketTimeout
public int getSocketTimeout()Description copied from interface:HttpConnection
Returns the socket timeout value.- Specified by:
getSocketTimeout
in interfaceHttpConnection
- Returns:
- positive value in milliseconds if a timeout is set,
0
if timeout is disabled or-1
if timeout is undefined.
-
shutdown
Description copied from interface:HttpConnection
Force-closes this connection. This is the only method of a connection which may be called from a different thread to terminate the connection. This method will not attempt to flush the transmitter's internal buffer prior to closing the underlying socket.- Specified by:
shutdown
in interfaceHttpConnection
- Throws:
IOException
-
close
Description copied from interface:HttpConnection
Closes this connection gracefully. This method will attempt to flush the internal output buffer prior to closing the underlying socket. This method MUST NOT be called from a different thread to force shutdown of the connection. Useshutdown
instead.- Specified by:
close
in interfaceAutoCloseable
- Specified by:
close
in interfaceCloseable
- Specified by:
close
in interfaceHttpConnection
- Throws:
IOException
-
fillInputBuffer
- Throws:
IOException
-
awaitInput
- Throws:
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 interfaceHttpConnection
- Returns:
true
if attempts to use this connection are likely to succeed, orfalse
if they are likely to fail and this connection should be closed
-
incrementRequestCount
protected void incrementRequestCount() -
incrementResponseCount
protected void incrementResponseCount() -
getMetrics
Description copied from interface:HttpConnection
Returns a collection of connection metrics.- Specified by:
getMetrics
in interfaceHttpConnection
- Returns:
- HttpConnectionMetrics
-
toString
-