The transport layer abstraction of the HTTP components.
This layer is used to transfer messages over sockets.
Sockets are always created through a
{@link org.apache.http.io.SocketFactory factory}.
You can provide factories to create plain sockets,
{@link org.apache.http.io.SecureSocketFactory secure} sockets
based on SSL/TLS, sockets that connect over SOCKS hosts,
sockets that implement bandwidth throttling,
or whatever else you might think of.
The data {@link org.apache.http.io.HttpDataTransmitter transmitter}
and {@link org.apache.http.io.HttpDataReceiver receiver} interfaces
with the respective factories provide an abstraction from
java.io
and java.nio
.
These interfaces are adapted to the plain
{@link org.apache.http.io.HttpDataOutputStream output} and
{@link org.apache.http.io.HttpDataInputStream input} streams
used in the {@link org.apache.http core API}.
There are implementations of the transport encodings used by HTTP,
in particular the chunked encoding for
{@link org.apache.http.io.ChunkedOutputStream sending} and
{@link org.apache.http.io.ChunkedInputStream receiving} entities.
The helper classes for resizable
{@link org.apache.http.io.ByteArrayBuffer byte} and
{@link org.apache.http.io.CharArrayBuffer char} arrays
might be useful elsewhere, too.