# ClientConnection

<a id="clientconnection-1"></a>

# ClientConnection

```cpp
#include <icy/http/client.h>

class ClientConnection
```

[Defined in src/http/include/icy/http/client.h:33](https://github.com/auscaster/icey/blob/main/src/http/include/icy/http/client.h#L33)

> **Inherits:** [`Connection`](https://auscaster.com/icey/docs/api-reference/icy-http-Connection.md#connection-1)

HTTP client connection for managing request/response lifecycle.

## List of all members

| Name | Kind | Owner |
|------|------|-------|
| [`opaque`](#opaque-3) | `variable` | Declared here |
| [`Connect`](#connect-11) | `variable` | Declared here |
| [`Headers`](#headers) | `variable` | Declared here |
| [`Payload`](#payload) | `variable` | Declared here |
| [`Complete`](#complete-1) | `variable` | Declared here |
| [`Error`](#error-16) | `variable` | Declared here |
| [`Close`](#close-26) | `variable` | Declared here |
| [`IncomingProgress`](#incomingprogress) | `variable` | Declared here |
| [`ClientConnection`](#clientconnection-2) | `function` | Declared here |
| [`~ClientConnection`](#clientconnection-3) | `function` | Declared here |
| [`start`](#start-22) | `function` | Declared here |
| [`start`](#start-23) | `function` | Declared here |
| [`send`](#send-11) | `function` | Declared here |
| [`setReadStream`](#setreadstream) | `function` | Declared here |
| [`readStream`](#readstream) | `function` | Declared here |
| [`_url`](#_url) | `variable` | Declared here |
| [`_connect`](#_connect) | `variable` | Declared here |
| [`_active`](#_active) | `variable` | Declared here |
| [`_complete`](#_complete) | `variable` | Declared here |
| [`_outgoingBuffer`](#_outgoingbuffer) | `variable` | Declared here |
| [`_readStream`](#_readstream) | `variable` | Declared here |
| [`connect`](#connect-12) | `function` | Declared here |
| [`incomingHeader`](#incomingheader) | `function` | Declared here |
| [`outgoingHeader`](#outgoingheader) | `function` | Declared here |
| [`onSocketConnect`](#onsocketconnect-2) | `function` | Declared here |
| [`Ptr`](#ptr-16) | `typedef` | Declared here |
| [`onHeaders`](#onheaders) | `function` | Declared here |
| [`onPayload`](#onpayload) | `function` | Declared here |
| [`onComplete`](#oncomplete) | `function` | Declared here |
| [`onClose`](#onclose-3) | `function` | Declared here |
| [`onSocketError`](#onsocketerror-2) | `function` | Declared here |
| [`ConnectionStream`](https://auscaster.com/icey/docs/api-reference/icy-http-Connection.md#connectionstream) | `friend` | Inherited from [`Connection`](https://auscaster.com/icey/docs/api-reference/icy-http-Connection.md#connection-1) |
| [`ConnectionAdapter`](https://auscaster.com/icey/docs/api-reference/icy-http-Connection.md#connectionadapter) | `friend` | Inherited from [`Connection`](https://auscaster.com/icey/docs/api-reference/icy-http-Connection.md#connection-1) |
| [`Connection`](https://auscaster.com/icey/docs/api-reference/icy-http-Connection.md#connection-2) | `function` | Inherited from [`Connection`](https://auscaster.com/icey/docs/api-reference/icy-http-Connection.md#connection-1) |
| [`~Connection`](https://auscaster.com/icey/docs/api-reference/icy-http-Connection.md#connection-3) | `function` | Inherited from [`Connection`](https://auscaster.com/icey/docs/api-reference/icy-http-Connection.md#connection-1) |
| [`onHeaders`](https://auscaster.com/icey/docs/api-reference/icy-http-Connection.md#onheaders-1) | `function` | Inherited from [`Connection`](https://auscaster.com/icey/docs/api-reference/icy-http-Connection.md#connection-1) |
| [`onPayload`](https://auscaster.com/icey/docs/api-reference/icy-http-Connection.md#onpayload-1) | `function` | Inherited from [`Connection`](https://auscaster.com/icey/docs/api-reference/icy-http-Connection.md#connection-1) |
| [`onComplete`](https://auscaster.com/icey/docs/api-reference/icy-http-Connection.md#oncomplete-1) | `function` | Inherited from [`Connection`](https://auscaster.com/icey/docs/api-reference/icy-http-Connection.md#connection-1) |
| [`onClose`](https://auscaster.com/icey/docs/api-reference/icy-http-Connection.md#onclose-4) | `function` | Inherited from [`Connection`](https://auscaster.com/icey/docs/api-reference/icy-http-Connection.md#connection-1) |
| [`send`](https://auscaster.com/icey/docs/api-reference/icy-http-Connection.md#send-12) | `function` | Inherited from [`Connection`](https://auscaster.com/icey/docs/api-reference/icy-http-Connection.md#connection-1) |
| [`sendOwned`](https://auscaster.com/icey/docs/api-reference/icy-http-Connection.md#sendowned-10) | `function` | Inherited from [`Connection`](https://auscaster.com/icey/docs/api-reference/icy-http-Connection.md#connection-1) |
| [`sendHeader`](https://auscaster.com/icey/docs/api-reference/icy-http-Connection.md#sendheader) | `function` | Inherited from [`Connection`](https://auscaster.com/icey/docs/api-reference/icy-http-Connection.md#connection-1) |
| [`close`](https://auscaster.com/icey/docs/api-reference/icy-http-Connection.md#close-27) | `function` | Inherited from [`Connection`](https://auscaster.com/icey/docs/api-reference/icy-http-Connection.md#connection-1) |
| [`markActive`](https://auscaster.com/icey/docs/api-reference/icy-http-Connection.md#markactive) | `function` | Inherited from [`Connection`](https://auscaster.com/icey/docs/api-reference/icy-http-Connection.md#connection-1) |
| [`beginStreaming`](https://auscaster.com/icey/docs/api-reference/icy-http-Connection.md#beginstreaming) | `function` | Inherited from [`Connection`](https://auscaster.com/icey/docs/api-reference/icy-http-Connection.md#connection-1) |
| [`endStreaming`](https://auscaster.com/icey/docs/api-reference/icy-http-Connection.md#endstreaming) | `function` | Inherited from [`Connection`](https://auscaster.com/icey/docs/api-reference/icy-http-Connection.md#connection-1) |
| [`closed`](https://auscaster.com/icey/docs/api-reference/icy-http-Connection.md#closed-6) | `function` | Inherited from [`Connection`](https://auscaster.com/icey/docs/api-reference/icy-http-Connection.md#connection-1) |
| [`error`](https://auscaster.com/icey/docs/api-reference/icy-http-Connection.md#error-17) | `function` | Inherited from [`Connection`](https://auscaster.com/icey/docs/api-reference/icy-http-Connection.md#connection-1) |
| [`headerAutoSendEnabled`](https://auscaster.com/icey/docs/api-reference/icy-http-Connection.md#headerautosendenabled) | `function` | Inherited from [`Connection`](https://auscaster.com/icey/docs/api-reference/icy-http-Connection.md#connection-1) |
| [`setHeaderAutoSendEnabled`](https://auscaster.com/icey/docs/api-reference/icy-http-Connection.md#setheaderautosendenabled) | `function` | Inherited from [`Connection`](https://auscaster.com/icey/docs/api-reference/icy-http-Connection.md#connection-1) |
| [`replaceAdapter`](https://auscaster.com/icey/docs/api-reference/icy-http-Connection.md#replaceadapter) | `function` | Inherited from [`Connection`](https://auscaster.com/icey/docs/api-reference/icy-http-Connection.md#connection-1) |
| [`replaceAdapter`](https://auscaster.com/icey/docs/api-reference/icy-http-Connection.md#replaceadapter-1) | `function` | Inherited from [`Connection`](https://auscaster.com/icey/docs/api-reference/icy-http-Connection.md#connection-1) |
| [`secure`](https://auscaster.com/icey/docs/api-reference/icy-http-Connection.md#secure) | `function` | Inherited from [`Connection`](https://auscaster.com/icey/docs/api-reference/icy-http-Connection.md#connection-1) |
| [`socket`](https://auscaster.com/icey/docs/api-reference/icy-http-Connection.md#socket-6) | `function` | Inherited from [`Connection`](https://auscaster.com/icey/docs/api-reference/icy-http-Connection.md#connection-1) |
| [`adapter`](https://auscaster.com/icey/docs/api-reference/icy-http-Connection.md#adapter) | `function` | Inherited from [`Connection`](https://auscaster.com/icey/docs/api-reference/icy-http-Connection.md#connection-1) |
| [`request`](https://auscaster.com/icey/docs/api-reference/icy-http-Connection.md#request-5) | `function` | Inherited from [`Connection`](https://auscaster.com/icey/docs/api-reference/icy-http-Connection.md#connection-1) |
| [`response`](https://auscaster.com/icey/docs/api-reference/icy-http-Connection.md#response-2) | `function` | Inherited from [`Connection`](https://auscaster.com/icey/docs/api-reference/icy-http-Connection.md#connection-1) |
| [`incomingHeader`](https://auscaster.com/icey/docs/api-reference/icy-http-Connection.md#incomingheader-1) | `function` | Inherited from [`Connection`](https://auscaster.com/icey/docs/api-reference/icy-http-Connection.md#connection-1) |
| [`outgoingHeader`](https://auscaster.com/icey/docs/api-reference/icy-http-Connection.md#outgoingheader-1) | `function` | Inherited from [`Connection`](https://auscaster.com/icey/docs/api-reference/icy-http-Connection.md#connection-1) |
| [`_socket`](https://auscaster.com/icey/docs/api-reference/icy-http-Connection.md#_socket-1) | `variable` | Inherited from [`Connection`](https://auscaster.com/icey/docs/api-reference/icy-http-Connection.md#connection-1) |
| [`_adapter`](https://auscaster.com/icey/docs/api-reference/icy-http-Connection.md#_adapter) | `variable` | Inherited from [`Connection`](https://auscaster.com/icey/docs/api-reference/icy-http-Connection.md#connection-1) |
| [`_request`](https://auscaster.com/icey/docs/api-reference/icy-http-Connection.md#_request-1) | `variable` | Inherited from [`Connection`](https://auscaster.com/icey/docs/api-reference/icy-http-Connection.md#connection-1) |
| [`_response`](https://auscaster.com/icey/docs/api-reference/icy-http-Connection.md#_response-1) | `variable` | Inherited from [`Connection`](https://auscaster.com/icey/docs/api-reference/icy-http-Connection.md#connection-1) |
| [`_error`](https://auscaster.com/icey/docs/api-reference/icy-http-Connection.md#_error-4) | `variable` | Inherited from [`Connection`](https://auscaster.com/icey/docs/api-reference/icy-http-Connection.md#connection-1) |
| [`_closed`](https://auscaster.com/icey/docs/api-reference/icy-http-Connection.md#_closed) | `variable` | Inherited from [`Connection`](https://auscaster.com/icey/docs/api-reference/icy-http-Connection.md#connection-1) |
| [`_shouldSendHeader`](https://auscaster.com/icey/docs/api-reference/icy-http-Connection.md#_shouldsendheader) | `variable` | Inherited from [`Connection`](https://auscaster.com/icey/docs/api-reference/icy-http-Connection.md#connection-1) |
| [`setError`](https://auscaster.com/icey/docs/api-reference/icy-http-Connection.md#seterror-5) | `function` | Inherited from [`Connection`](https://auscaster.com/icey/docs/api-reference/icy-http-Connection.md#connection-1) |
| [`onSocketConnect`](https://auscaster.com/icey/docs/api-reference/icy-http-Connection.md#onsocketconnect-3) | `function` | Inherited from [`Connection`](https://auscaster.com/icey/docs/api-reference/icy-http-Connection.md#connection-1) |
| [`onSocketRecv`](https://auscaster.com/icey/docs/api-reference/icy-http-Connection.md#onsocketrecv-3) | `function` | Inherited from [`Connection`](https://auscaster.com/icey/docs/api-reference/icy-http-Connection.md#connection-1) |
| [`onSocketError`](https://auscaster.com/icey/docs/api-reference/icy-http-Connection.md#onsocketerror-3) | `function` | Inherited from [`Connection`](https://auscaster.com/icey/docs/api-reference/icy-http-Connection.md#connection-1) |
| [`onSocketClose`](https://auscaster.com/icey/docs/api-reference/icy-http-Connection.md#onsocketclose-2) | `function` | Inherited from [`Connection`](https://auscaster.com/icey/docs/api-reference/icy-http-Connection.md#connection-1) |
| [`Ptr`](https://auscaster.com/icey/docs/api-reference/icy-http-Connection.md#ptr-17) | `typedef` | Inherited from [`Connection`](https://auscaster.com/icey/docs/api-reference/icy-http-Connection.md#connection-1) |
| [`priority`](https://auscaster.com/icey/docs/api-reference/icy-net-SocketAdapter.md#priority-3) | `variable` | Inherited from [`SocketAdapter`](https://auscaster.com/icey/docs/api-reference/icy-net-SocketAdapter.md#socketadapter) |
| [`SocketAdapter`](https://auscaster.com/icey/docs/api-reference/icy-net-SocketAdapter.md#socketadapter-1) | `function` | Inherited from [`SocketAdapter`](https://auscaster.com/icey/docs/api-reference/icy-net-SocketAdapter.md#socketadapter) |
| [`~SocketAdapter`](https://auscaster.com/icey/docs/api-reference/icy-net-SocketAdapter.md#socketadapter-2) | `function` | Inherited from [`SocketAdapter`](https://auscaster.com/icey/docs/api-reference/icy-net-SocketAdapter.md#socketadapter) |
| [`send`](https://auscaster.com/icey/docs/api-reference/icy-net-SocketAdapter.md#send-1) | `function` | Inherited from [`SocketAdapter`](https://auscaster.com/icey/docs/api-reference/icy-net-SocketAdapter.md#socketadapter) |
| [`send`](https://auscaster.com/icey/docs/api-reference/icy-net-SocketAdapter.md#send-2) | `function` | Inherited from [`SocketAdapter`](https://auscaster.com/icey/docs/api-reference/icy-net-SocketAdapter.md#socketadapter) |
| [`sendOwned`](https://auscaster.com/icey/docs/api-reference/icy-net-SocketAdapter.md#sendowned-2) | `function` | Inherited from [`SocketAdapter`](https://auscaster.com/icey/docs/api-reference/icy-net-SocketAdapter.md#socketadapter) |
| [`sendOwned`](https://auscaster.com/icey/docs/api-reference/icy-net-SocketAdapter.md#sendowned-3) | `function` | Inherited from [`SocketAdapter`](https://auscaster.com/icey/docs/api-reference/icy-net-SocketAdapter.md#socketadapter) |
| [`sendPacket`](https://auscaster.com/icey/docs/api-reference/icy-net-SocketAdapter.md#sendpacket) | `function` | Inherited from [`SocketAdapter`](https://auscaster.com/icey/docs/api-reference/icy-net-SocketAdapter.md#socketadapter) |
| [`sendPacket`](https://auscaster.com/icey/docs/api-reference/icy-net-SocketAdapter.md#sendpacket-1) | `function` | Inherited from [`SocketAdapter`](https://auscaster.com/icey/docs/api-reference/icy-net-SocketAdapter.md#socketadapter) |
| [`sendPacket`](https://auscaster.com/icey/docs/api-reference/icy-net-SocketAdapter.md#sendpacket-2) | `function` | Inherited from [`SocketAdapter`](https://auscaster.com/icey/docs/api-reference/icy-net-SocketAdapter.md#socketadapter) |
| [`setSender`](https://auscaster.com/icey/docs/api-reference/icy-net-SocketAdapter.md#setsender) | `function` | Inherited from [`SocketAdapter`](https://auscaster.com/icey/docs/api-reference/icy-net-SocketAdapter.md#socketadapter) |
| [`sender`](https://auscaster.com/icey/docs/api-reference/icy-net-SocketAdapter.md#sender) | `function` | Inherited from [`SocketAdapter`](https://auscaster.com/icey/docs/api-reference/icy-net-SocketAdapter.md#socketadapter) |
| [`addReceiver`](https://auscaster.com/icey/docs/api-reference/icy-net-SocketAdapter.md#addreceiver) | `function` | Inherited from [`SocketAdapter`](https://auscaster.com/icey/docs/api-reference/icy-net-SocketAdapter.md#socketadapter) |
| [`removeReceiver`](https://auscaster.com/icey/docs/api-reference/icy-net-SocketAdapter.md#removereceiver) | `function` | Inherited from [`SocketAdapter`](https://auscaster.com/icey/docs/api-reference/icy-net-SocketAdapter.md#socketadapter) |
| [`hasReceiver`](https://auscaster.com/icey/docs/api-reference/icy-net-SocketAdapter.md#hasreceiver) | `function` | Inherited from [`SocketAdapter`](https://auscaster.com/icey/docs/api-reference/icy-net-SocketAdapter.md#socketadapter) |
| [`receivers`](https://auscaster.com/icey/docs/api-reference/icy-net-SocketAdapter.md#receivers) | `function` | Inherited from [`SocketAdapter`](https://auscaster.com/icey/docs/api-reference/icy-net-SocketAdapter.md#socketadapter) |
| [`onSocketConnect`](https://auscaster.com/icey/docs/api-reference/icy-net-SocketAdapter.md#onsocketconnect) | `function` | Inherited from [`SocketAdapter`](https://auscaster.com/icey/docs/api-reference/icy-net-SocketAdapter.md#socketadapter) |
| [`onSocketRecv`](https://auscaster.com/icey/docs/api-reference/icy-net-SocketAdapter.md#onsocketrecv-1) | `function` | Inherited from [`SocketAdapter`](https://auscaster.com/icey/docs/api-reference/icy-net-SocketAdapter.md#socketadapter) |
| [`onSocketError`](https://auscaster.com/icey/docs/api-reference/icy-net-SocketAdapter.md#onsocketerror) | `function` | Inherited from [`SocketAdapter`](https://auscaster.com/icey/docs/api-reference/icy-net-SocketAdapter.md#socketadapter) |
| [`onSocketClose`](https://auscaster.com/icey/docs/api-reference/icy-net-SocketAdapter.md#onsocketclose) | `function` | Inherited from [`SocketAdapter`](https://auscaster.com/icey/docs/api-reference/icy-net-SocketAdapter.md#socketadapter) |
| [`_sender`](https://auscaster.com/icey/docs/api-reference/icy-net-SocketAdapter.md#_sender) | `variable` | Inherited from [`SocketAdapter`](https://auscaster.com/icey/docs/api-reference/icy-net-SocketAdapter.md#socketadapter) |
| [`_receivers`](https://auscaster.com/icey/docs/api-reference/icy-net-SocketAdapter.md#_receivers) | `variable` | Inherited from [`SocketAdapter`](https://auscaster.com/icey/docs/api-reference/icy-net-SocketAdapter.md#socketadapter) |
| [`_dirty`](https://auscaster.com/icey/docs/api-reference/icy-net-SocketAdapter.md#_dirty) | `variable` | Inherited from [`SocketAdapter`](https://auscaster.com/icey/docs/api-reference/icy-net-SocketAdapter.md#socketadapter) |
| [`_dispatchDepth`](https://auscaster.com/icey/docs/api-reference/icy-net-SocketAdapter.md#_dispatchdepth) | `variable` | Inherited from [`SocketAdapter`](https://auscaster.com/icey/docs/api-reference/icy-net-SocketAdapter.md#socketadapter) |
| [`cleanupReceivers`](https://auscaster.com/icey/docs/api-reference/icy-net-SocketAdapter.md#cleanupreceivers) | `function` | Inherited from [`SocketAdapter`](https://auscaster.com/icey/docs/api-reference/icy-net-SocketAdapter.md#socketadapter) |

## Inherited from [`Connection`](https://auscaster.com/icey/docs/api-reference/icy-http-Connection.md#connection-1)

| Kind | Name | Description |
|------|------|-------------|
| `friend` | [`ConnectionStream`](https://auscaster.com/icey/docs/api-reference/icy-http-Connection.md#connectionstream)  |  |
| `friend` | [`ConnectionAdapter`](https://auscaster.com/icey/docs/api-reference/icy-http-Connection.md#connectionadapter)  |  |
| `function` | [`Connection`](https://auscaster.com/icey/docs/api-reference/icy-http-Connection.md#connection-2)  | Creates a [Connection](https://auscaster.com/icey/docs/api-reference/icy-http-Connection.md#connection-1) using the given TCP socket. |
| `function` | [`~Connection`](https://auscaster.com/icey/docs/api-reference/icy-http-Connection.md#connection-3) `virtual` `noexcept` |  |
| `function` | [`onHeaders`](https://auscaster.com/icey/docs/api-reference/icy-http-Connection.md#onheaders-1) `virtual` | Called when the incoming HTTP headers have been fully parsed. |
| `function` | [`onPayload`](https://auscaster.com/icey/docs/api-reference/icy-http-Connection.md#onpayload-1) `virtual` | Called for each chunk of incoming body data after headers are complete. |
| `function` | [`onComplete`](https://auscaster.com/icey/docs/api-reference/icy-http-Connection.md#oncomplete-1) `virtual` | Called when the incoming HTTP message is fully received. |
| `function` | [`onClose`](https://auscaster.com/icey/docs/api-reference/icy-http-Connection.md#onclose-4) `virtual` | Called when the connection is closed. |
| `function` | [`send`](https://auscaster.com/icey/docs/api-reference/icy-http-Connection.md#send-12) `virtual` `override` | Send raw data to the peer. |
| `function` | [`sendOwned`](https://auscaster.com/icey/docs/api-reference/icy-http-Connection.md#sendowned-10) `virtual` `override` | Send an owned payload buffer to the peer. |
| `function` | [`sendHeader`](https://auscaster.com/icey/docs/api-reference/icy-http-Connection.md#sendheader) `virtual` | Send the outdoing HTTP header. |
| `function` | [`close`](https://auscaster.com/icey/docs/api-reference/icy-http-Connection.md#close-27) `virtual` | Close the connection and schedule the object for deferred deletion. |
| `function` | [`markActive`](https://auscaster.com/icey/docs/api-reference/icy-http-Connection.md#markactive) `virtual` `inline` | Marks the connection as active. [Server](https://auscaster.com/icey/docs/api-reference/icy-http-Server.md#server) connections override this to refresh the idle timer. |
| `function` | [`beginStreaming`](https://auscaster.com/icey/docs/api-reference/icy-http-Connection.md#beginstreaming) `virtual` `inline` | Explicitly enter long-lived streaming mode. Base connections ignore this; server connections use it to disable keep-alive idle reaping while a response stream is active. |
| `function` | [`endStreaming`](https://auscaster.com/icey/docs/api-reference/icy-http-Connection.md#endstreaming) `virtual` `inline` | Exit long-lived streaming mode. |
| `function` | [`closed`](https://auscaster.com/icey/docs/api-reference/icy-http-Connection.md#closed-6) `const` | Return true if the connection is closed. |
| `function` | [`error`](https://auscaster.com/icey/docs/api-reference/icy-http-Connection.md#error-17) `const` | Return the error object if any. |
| `function` | [`headerAutoSendEnabled`](https://auscaster.com/icey/docs/api-reference/icy-http-Connection.md#headerautosendenabled) `const` | Return true if headers should be automatically sent. |
| `function` | [`setHeaderAutoSendEnabled`](https://auscaster.com/icey/docs/api-reference/icy-http-Connection.md#setheaderautosendenabled)  | Enable or disable automatic header emission for the next outgoing send path. |
| `function` | [`replaceAdapter`](https://auscaster.com/icey/docs/api-reference/icy-http-Connection.md#replaceadapter) `virtual` | Assign the new [ConnectionAdapter](https://auscaster.com/icey/docs/api-reference/icy-http-ConnectionAdapter.md#connectionadapter-1) and setup the chain. The flow is: [Connection](https://auscaster.com/icey/docs/api-reference/icy-http-Connection.md#connection-1) <-> [ConnectionAdapter](https://auscaster.com/icey/docs/api-reference/icy-http-ConnectionAdapter.md#connectionadapter-1) <-> Socket. Takes ownership of the adapter (deferred deletion via uv loop). |
| `function` | [`replaceAdapter`](https://auscaster.com/icey/docs/api-reference/icy-http-Connection.md#replaceadapter-1) `virtual` | Overload for nullptr (used in destructor to clear adapter). |
| `function` | [`secure`](https://auscaster.com/icey/docs/api-reference/icy-http-Connection.md#secure) `const` | Return true if the connection uses TLS/SSL. |
| `function` | [`socket`](https://auscaster.com/icey/docs/api-reference/icy-http-Connection.md#socket-6)  | Return the underlying socket pointer. |
| `function` | [`adapter`](https://auscaster.com/icey/docs/api-reference/icy-http-Connection.md#adapter) `const` | Return the underlying adapter pointer. |
| `function` | [`request`](https://auscaster.com/icey/docs/api-reference/icy-http-Connection.md#request-5)  | The HTTP request headers. |
| `function` | [`response`](https://auscaster.com/icey/docs/api-reference/icy-http-Connection.md#response-2)  | The HTTP response headers. |
| `function` | [`incomingHeader`](https://auscaster.com/icey/docs/api-reference/icy-http-Connection.md#incomingheader-1) `virtual` | Returns the incoming HTTP message header (request or response depending on role). |
| `function` | [`outgoingHeader`](https://auscaster.com/icey/docs/api-reference/icy-http-Connection.md#outgoingheader-1) `virtual` | Returns the outgoing HTTP message header (request or response depending on role). |
| `variable` | [`_socket`](https://auscaster.com/icey/docs/api-reference/icy-http-Connection.md#_socket-1)  |  |
| `variable` | [`_adapter`](https://auscaster.com/icey/docs/api-reference/icy-http-Connection.md#_adapter)  |  |
| `variable` | [`_request`](https://auscaster.com/icey/docs/api-reference/icy-http-Connection.md#_request-1)  |  |
| `variable` | [`_response`](https://auscaster.com/icey/docs/api-reference/icy-http-Connection.md#_response-1)  |  |
| `variable` | [`_error`](https://auscaster.com/icey/docs/api-reference/icy-http-Connection.md#_error-4)  |  |
| `variable` | [`_closed`](https://auscaster.com/icey/docs/api-reference/icy-http-Connection.md#_closed)  |  |
| `variable` | [`_shouldSendHeader`](https://auscaster.com/icey/docs/api-reference/icy-http-Connection.md#_shouldsendheader)  |  |
| `function` | [`setError`](https://auscaster.com/icey/docs/api-reference/icy-http-Connection.md#seterror-5) `virtual` | Set the internal error. Note: Setting the error does not [`close()`](https://auscaster.com/icey/docs/api-reference/icy-http-Connection.md#close-27) the connection. |
| `function` | [`onSocketConnect`](https://auscaster.com/icey/docs/api-reference/icy-http-Connection.md#onsocketconnect-3) `virtual` `override` | [net::SocketAdapter](https://auscaster.com/icey/docs/api-reference/icy-net-SocketAdapter.md#socketadapter) interface |
| `function` | [`onSocketRecv`](https://auscaster.com/icey/docs/api-reference/icy-http-Connection.md#onsocketrecv-3) `virtual` `override` | Called when data is received from the socket. Forwards the event to all registered receivers in priority order. |
| `function` | [`onSocketError`](https://auscaster.com/icey/docs/api-reference/icy-http-Connection.md#onsocketerror-3) `virtual` `override` | Called when the socket encounters an error. Forwards the event to all registered receivers in priority order. |
| `function` | [`onSocketClose`](https://auscaster.com/icey/docs/api-reference/icy-http-Connection.md#onsocketclose-2) `virtual` `override` | Called when the socket is closed. Forwards the event to all registered receivers in priority order. |
| `typedef` | [`Ptr`](https://auscaster.com/icey/docs/api-reference/icy-http-Connection.md#ptr-17)  |  |

## Inherited from [`SocketAdapter`](https://auscaster.com/icey/docs/api-reference/icy-net-SocketAdapter.md#socketadapter)

| Kind | Name | Description |
|------|------|-------------|
| `variable` | [`priority`](https://auscaster.com/icey/docs/api-reference/icy-net-SocketAdapter.md#priority-3)  | The priority of this adapter for STL sort operations. |
| `function` | [`SocketAdapter`](https://auscaster.com/icey/docs/api-reference/icy-net-SocketAdapter.md#socketadapter-1)  | Creates the [SocketAdapter](https://auscaster.com/icey/docs/api-reference/icy-net-SocketAdapter.md#socketadapter). |
| `function` | [`~SocketAdapter`](https://auscaster.com/icey/docs/api-reference/icy-net-SocketAdapter.md#socketadapter-2) `virtual` `noexcept` | Destroys the [SocketAdapter](https://auscaster.com/icey/docs/api-reference/icy-net-SocketAdapter.md#socketadapter). |
| `function` | [`send`](https://auscaster.com/icey/docs/api-reference/icy-net-SocketAdapter.md#send-1) `virtual` | Sends the given data buffer to the connected peer. Returns the number of bytes sent or -1 on error. No exception will be thrown. For TCP sockets the given peer address must match the connected peer address. |
| `function` | [`send`](https://auscaster.com/icey/docs/api-reference/icy-net-SocketAdapter.md#send-2) `virtual` |  |
| `function` | [`sendOwned`](https://auscaster.com/icey/docs/api-reference/icy-net-SocketAdapter.md#sendowned-2) `virtual` | Sends an owned payload buffer to the connected peer. |
| `function` | [`sendOwned`](https://auscaster.com/icey/docs/api-reference/icy-net-SocketAdapter.md#sendowned-3) `virtual` |  |
| `function` | [`sendPacket`](https://auscaster.com/icey/docs/api-reference/icy-net-SocketAdapter.md#sendpacket) `virtual` | Sends the given packet to the connected peer. Returns the number of bytes sent or -1 on error. No exception will be thrown. For TCP sockets the given peer address must match the connected peer address. |
| `function` | [`sendPacket`](https://auscaster.com/icey/docs/api-reference/icy-net-SocketAdapter.md#sendpacket-1) `virtual` |  |
| `function` | [`sendPacket`](https://auscaster.com/icey/docs/api-reference/icy-net-SocketAdapter.md#sendpacket-2) `virtual` | Sends the given packet to the connected peer. This method provides delegate compatibility, and unlike other send methods throws an exception if the underlying socket is closed. |
| `function` | [`setSender`](https://auscaster.com/icey/docs/api-reference/icy-net-SocketAdapter.md#setsender) `virtual` | Sets the pointer to the outgoing data adapter. Send methods proxy data to this adapter by default. |
| `function` | [`sender`](https://auscaster.com/icey/docs/api-reference/icy-net-SocketAdapter.md#sender)  | Returns the output [SocketAdapter](https://auscaster.com/icey/docs/api-reference/icy-net-SocketAdapter.md#socketadapter) pointer. |
| `function` | [`addReceiver`](https://auscaster.com/icey/docs/api-reference/icy-net-SocketAdapter.md#addreceiver) `virtual` | Sets the pointer to the incoming data adapter. Events proxy data to this adapter by default. |
| `function` | [`removeReceiver`](https://auscaster.com/icey/docs/api-reference/icy-net-SocketAdapter.md#removereceiver) `virtual` | Remove the given receiver. |
| `function` | [`hasReceiver`](https://auscaster.com/icey/docs/api-reference/icy-net-SocketAdapter.md#hasreceiver) `virtual` | Returns true if the given receiver is connected. |
| `function` | [`receivers`](https://auscaster.com/icey/docs/api-reference/icy-net-SocketAdapter.md#receivers)  | Returns all currently registered input [SocketAdapter](https://auscaster.com/icey/docs/api-reference/icy-net-SocketAdapter.md#socketadapter) pointers. Dead (removed) entries are excluded from the returned list. |
| `function` | [`onSocketConnect`](https://auscaster.com/icey/docs/api-reference/icy-net-SocketAdapter.md#onsocketconnect) `virtual` | Called when the socket establishes a connection. Forwards the event to all registered receivers in priority order. Override to intercept before the application sees the event. |
| `function` | [`onSocketRecv`](https://auscaster.com/icey/docs/api-reference/icy-net-SocketAdapter.md#onsocketrecv-1) `virtual` | Called when data is received from the socket. Forwards the event to all registered receivers in priority order. |
| `function` | [`onSocketError`](https://auscaster.com/icey/docs/api-reference/icy-net-SocketAdapter.md#onsocketerror) `virtual` | Called when the socket encounters an error. Forwards the event to all registered receivers in priority order. |
| `function` | [`onSocketClose`](https://auscaster.com/icey/docs/api-reference/icy-net-SocketAdapter.md#onsocketclose) `virtual` | Called when the socket is closed. Forwards the event to all registered receivers in priority order. |
| `variable` | [`_sender`](https://auscaster.com/icey/docs/api-reference/icy-net-SocketAdapter.md#_sender)  |  |
| `variable` | [`_receivers`](https://auscaster.com/icey/docs/api-reference/icy-net-SocketAdapter.md#_receivers)  |  |
| `variable` | [`_dirty`](https://auscaster.com/icey/docs/api-reference/icy-net-SocketAdapter.md#_dirty)  |  |
| `variable` | [`_dispatchDepth`](https://auscaster.com/icey/docs/api-reference/icy-net-SocketAdapter.md#_dispatchdepth)  |  |
| `function` | [`cleanupReceivers`](https://auscaster.com/icey/docs/api-reference/icy-net-SocketAdapter.md#cleanupreceivers) `virtual` |  |

## Public Attributes

| Return | Name | Description |
|--------|------|-------------|
| `void *` | [`opaque`](#opaque-3)  | Optional unmanaged client data pointer. Not used by the connection internally. |
| [`NullSignal`](https://auscaster.com/icey/docs/api-reference/base.md#nullsignal) | [`Connect`](#connect-11)  | Status signals. |
| [`Signal`](https://auscaster.com/icey/docs/api-reference/icy-Signal.md#signal)< void([`Response`](https://auscaster.com/icey/docs/api-reference/icy-http-Response.md#response-3) &)> | [`Headers`](#headers)  | Signals when the response HTTP header has been received. |
| [`Signal`](https://auscaster.com/icey/docs/api-reference/icy-Signal.md#signal)< void(const [`MutableBuffer`](https://auscaster.com/icey/docs/api-reference/icy-MutableBuffer.md#mutablebuffer-6) &)> | [`Payload`](#payload)  | Signals when raw data is received. |
| [`Signal`](https://auscaster.com/icey/docs/api-reference/icy-Signal.md#signal)< void(const [`Response`](https://auscaster.com/icey/docs/api-reference/icy-http-Response.md#response-3) &)> | [`Complete`](#complete-1)  | Signals when the HTTP transaction is complete. |
| [`Signal`](https://auscaster.com/icey/docs/api-reference/icy-Signal.md#signal)< void(const [`icy::Error`](https://auscaster.com/icey/docs/api-reference/icy-Error.md#error) &)> | [`Error`](#error-16)  | Signals when the underlying transport reports an error. |
| [`Signal`](https://auscaster.com/icey/docs/api-reference/icy-Signal.md#signal)< void([`Connection`](https://auscaster.com/icey/docs/api-reference/icy-http-Connection.md#connection-1) &)> | [`Close`](#close-26)  | Signals when the connection is closed. |
| [`ProgressSignal`](https://auscaster.com/icey/docs/api-reference/icy-http-ProgressSignal.md#progresssignal) | [`IncomingProgress`](#incomingprogress)  | Signals download progress (0-100%) |

---

<a id="opaque-3"></a>

### opaque

```cpp
void * opaque
```

[Defined in src/http/include/icy/http/client.h:91](https://github.com/auscaster/icey/blob/main/src/http/include/icy/http/client.h#L91)

Optional unmanaged client data pointer. Not used by the connection internally.

---

<a id="connect-11"></a>

### Connect

```cpp
NullSignal Connect
```

Type: [`NullSignal`](https://auscaster.com/icey/docs/api-reference/base.md#nullsignal)

[Defined in src/http/include/icy/http/client.h:110](https://github.com/auscaster/icey/blob/main/src/http/include/icy/http/client.h#L110)

Status signals.

Signals when the client socket is connected and data can flow

---

<a id="headers"></a>

### Headers

```cpp
Signal< void(Response &)> Headers
```

Type: [`Signal`](https://auscaster.com/icey/docs/api-reference/icy-Signal.md#signal)< void([`Response`](https://auscaster.com/icey/docs/api-reference/icy-http-Response.md#response-3) &)>

[Defined in src/http/include/icy/http/client.h:111](https://github.com/auscaster/icey/blob/main/src/http/include/icy/http/client.h#L111)

Signals when the response HTTP header has been received.

---

<a id="payload"></a>

### Payload

```cpp
Signal< void(const MutableBuffer &)> Payload
```

Type: [`Signal`](https://auscaster.com/icey/docs/api-reference/icy-Signal.md#signal)< void(const [`MutableBuffer`](https://auscaster.com/icey/docs/api-reference/icy-MutableBuffer.md#mutablebuffer-6) &)>

[Defined in src/http/include/icy/http/client.h:112](https://github.com/auscaster/icey/blob/main/src/http/include/icy/http/client.h#L112)

Signals when raw data is received.

---

<a id="complete-1"></a>

### Complete

```cpp
Signal< void(const Response &)> Complete
```

Type: [`Signal`](https://auscaster.com/icey/docs/api-reference/icy-Signal.md#signal)< void(const [`Response`](https://auscaster.com/icey/docs/api-reference/icy-http-Response.md#response-3) &)>

[Defined in src/http/include/icy/http/client.h:113](https://github.com/auscaster/icey/blob/main/src/http/include/icy/http/client.h#L113)

Signals when the HTTP transaction is complete.

---

<a id="error-16"></a>

### Error

```cpp
Signal< void(const icy::Error &)> Error
```

Type: [`Signal`](https://auscaster.com/icey/docs/api-reference/icy-Signal.md#signal)< void(const [`icy::Error`](https://auscaster.com/icey/docs/api-reference/icy-Error.md#error) &)>

[Defined in src/http/include/icy/http/client.h:114](https://github.com/auscaster/icey/blob/main/src/http/include/icy/http/client.h#L114)

Signals when the underlying transport reports an error.

---

<a id="close-26"></a>

### Close

```cpp
Signal< void(Connection &)> Close
```

Type: [`Signal`](https://auscaster.com/icey/docs/api-reference/icy-Signal.md#signal)< void([`Connection`](https://auscaster.com/icey/docs/api-reference/icy-http-Connection.md#connection-1) &)>

[Defined in src/http/include/icy/http/client.h:115](https://github.com/auscaster/icey/blob/main/src/http/include/icy/http/client.h#L115)

Signals when the connection is closed.

---

<a id="incomingprogress"></a>

### IncomingProgress

```cpp
ProgressSignal IncomingProgress
```

Type: [`ProgressSignal`](https://auscaster.com/icey/docs/api-reference/icy-http-ProgressSignal.md#progresssignal)

[Defined in src/http/include/icy/http/client.h:116](https://github.com/auscaster/icey/blob/main/src/http/include/icy/http/client.h#L116)

Signals download progress (0-100%)

## Public Methods

| Return | Name | Description |
|--------|------|-------------|
|  | [`ClientConnection`](#clientconnection-2)  | Creates a [ClientConnection](#clientconnection-1) to the given [URL](https://auscaster.com/icey/docs/api-reference/icy-http-URL.md#url), pre-populating the request URI and Host header. The response status is initialised to 502 Bad Gateway until a real response is received. |
|  | [`~ClientConnection`](#clientconnection-3) `virtual` |  |
| `void` | [`start`](#start-22) `virtual` | Starts the internal HTTP request. |
| `void` | [`start`](#start-23) `virtual` | Starts the given HTTP request, replacing the internal request object. |
| `ssize_t` | [`send`](#send-11) `virtual` `override` | Sends raw data to the peer, initiating a connection first if needed. Data is buffered internally until the connection is established. |
| `void` | [`setReadStream`](#setreadstream) `virtual` | Sets the output stream to which incoming response body data is written. The stream pointer is owned by the connection and freed with it. Must be called before [start()](#start-22). |
| `StreamT &` | [`readStream`](#readstream) `inline` | Returns a reference to the read stream cast to the specified type. |

---

<a id="clientconnection-2"></a>

### ClientConnection

```cpp
ClientConnection(const URL & url, const net::TCPSocket::Ptr & socket = std::make_shared< net::TCPSocket >())
```

[Defined in src/http/include/icy/http/client.h:42](https://github.com/auscaster/icey/blob/main/src/http/include/icy/http/client.h#L42)

Creates a [ClientConnection](#clientconnection-1) to the given [URL](https://auscaster.com/icey/docs/api-reference/icy-http-URL.md#url), pre-populating the request URI and Host header. The response status is initialised to 502 Bad Gateway until a real response is received.

#### Parameters

| Parameter | Type | Description |
|-----------|------|-------------|
| `url` | const [`URL`](https://auscaster.com/icey/docs/api-reference/icy-http-URL.md#url) & | Target [URL](https://auscaster.com/icey/docs/api-reference/icy-http-URL.md#url). Scheme, host, port and path are extracted automatically. |
| `socket` | const [`net::TCPSocket::Ptr`](https://auscaster.com/icey/docs/api-reference/icy-net-TCPSocket.md#ptr-14) & | TCP socket to use. Defaults to a plain TCPSocket; pass an SSLSocket for HTTPS. |

---

<a id="clientconnection-3"></a>

### ~ClientConnection

`virtual`

```cpp
virtual ~ClientConnection()
```

[Defined in src/http/include/icy/http/client.h:44](https://github.com/auscaster/icey/blob/main/src/http/include/icy/http/client.h#L44)

---

<a id="start-22"></a>

### start

`virtual`

```cpp
virtual void start()
```

[Defined in src/http/include/icy/http/client.h:51](https://github.com/auscaster/icey/blob/main/src/http/include/icy/http/client.h#L51)

Starts the internal HTTP request.

Calls [connect()](#connect-12) internally if the socket is not already connecting or connected. The actual request will be sent when the socket is connected.

#### Exceptions

| Exception | Description |
|-----------|-------------|
| `std::runtime_error` | if already connecting. |

---

<a id="start-23"></a>

### start

`virtual`

```cpp
virtual void start(http::Request & req)
```

[Defined in src/http/include/icy/http/client.h:59](https://github.com/auscaster/icey/blob/main/src/http/include/icy/http/client.h#L59)

Starts the given HTTP request, replacing the internal request object.

Calls [connect()](#connect-12) internally if the socket is not already connecting or connected. The actual request will be sent when the socket is connected.

#### Parameters

| Parameter | Type | Description |
|-----------|------|-------------|
| `req` | [`http::Request`](https://auscaster.com/icey/docs/api-reference/icy-http-Request.md#request-6) & | The HTTP request to send. Replaces the internal request. |

#### Exceptions

| Exception | Description |
|-----------|-------------|
| `std::runtime_error` | if already connecting. |

---

<a id="send-11"></a>

### send

`virtual` `override`

```cpp
virtual ssize_t send(const char * data, size_t len, int flags = 0) override
```

[Defined in src/http/include/icy/http/client.h:67](https://github.com/auscaster/icey/blob/main/src/http/include/icy/http/client.h#L67)

Sends raw data to the peer, initiating a connection first if needed. Data is buffered internally until the connection is established. 
#### Returns
Number of bytes sent or buffered.

#### Reimplements

- [`Connection::send`](https://auscaster.com/icey/docs/api-reference/icy-http-Connection.md#send-12)

#### Parameters

| Parameter | Type | Description |
|-----------|------|-------------|
| `data` | `const char *` | Pointer to the data buffer. |
| `len` | `size_t` | Number of bytes to send. |
| `flags` | `int` | Socket send flags (unused for HTTP). |

---

<a id="setreadstream"></a>

### setReadStream

`virtual`

```cpp
virtual void setReadStream(std::ostream * os)
```

[Defined in src/http/include/icy/http/client.h:74](https://github.com/auscaster/icey/blob/main/src/http/include/icy/http/client.h#L74)

Sets the output stream to which incoming response body data is written. The stream pointer is owned by the connection and freed with it. Must be called before [start()](#start-22).

#### Parameters

| Parameter | Type | Description |
|-----------|------|-------------|
| `os` | `std::ostream *` | Pointer to the output stream. Takes ownership. |

#### Exceptions

| Exception | Description |
|-----------|-------------|
| `std::runtime_error` | if already connecting. |

---

<a id="readstream"></a>

### readStream

`inline`

```cpp
template<class StreamT> inline StreamT & readStream()
```

[Defined in src/http/include/icy/http/client.h:82](https://github.com/auscaster/icey/blob/main/src/http/include/icy/http/client.h#L82)

Returns a reference to the read stream cast to the specified type. 
#### Returns
Reference to the stream.

#### Exceptions

| Exception | Description |
|-----------|-------------|
| `std::runtime_error` | if no read stream has been set. |
| `std::bad_cast` | if the stream is not of type StreamT. |

## Protected Attributes

| Return | Name | Description |
|--------|------|-------------|
| [`URL`](https://auscaster.com/icey/docs/api-reference/icy-http-URL.md#url) | [`_url`](#_url)  |  |
| `bool` | [`_connect`](#_connect)  |  |
| `bool` | [`_active`](#_active)  |  |
| `bool` | [`_complete`](#_complete)  |  |
| std::vector< [`PendingWrite`](https://auscaster.com/icey/docs/api-reference/icy-http-ClientConnection-PendingWrite.md#pendingwrite) > | [`_outgoingBuffer`](#_outgoingbuffer)  |  |
| `std::unique_ptr< std::ostream >` | [`_readStream`](#_readstream)  |  |

---

<a id="_url"></a>

### _url

```cpp
URL _url
```

Type: [`URL`](https://auscaster.com/icey/docs/api-reference/icy-http-URL.md#url)

[Defined in src/http/include/icy/http/client.h:136](https://github.com/auscaster/icey/blob/main/src/http/include/icy/http/client.h#L136)

---

<a id="_connect"></a>

### _connect

```cpp
bool _connect
```

[Defined in src/http/include/icy/http/client.h:137](https://github.com/auscaster/icey/blob/main/src/http/include/icy/http/client.h#L137)

---

<a id="_active"></a>

### _active

```cpp
bool _active
```

[Defined in src/http/include/icy/http/client.h:138](https://github.com/auscaster/icey/blob/main/src/http/include/icy/http/client.h#L138)

---

<a id="_complete"></a>

### _complete

```cpp
bool _complete
```

[Defined in src/http/include/icy/http/client.h:139](https://github.com/auscaster/icey/blob/main/src/http/include/icy/http/client.h#L139)

---

<a id="_outgoingbuffer"></a>

### _outgoingBuffer

```cpp
std::vector< PendingWrite > _outgoingBuffer
```

Type: std::vector< [`PendingWrite`](https://auscaster.com/icey/docs/api-reference/icy-http-ClientConnection-PendingWrite.md#pendingwrite) >

[Defined in src/http/include/icy/http/client.h:140](https://github.com/auscaster/icey/blob/main/src/http/include/icy/http/client.h#L140)

---

<a id="_readstream"></a>

### _readStream

```cpp
std::unique_ptr< std::ostream > _readStream
```

[Defined in src/http/include/icy/http/client.h:141](https://github.com/auscaster/icey/blob/main/src/http/include/icy/http/client.h#L141)

## Protected Methods

| Return | Name | Description |
|--------|------|-------------|
| `void` | [`connect`](#connect-12) `virtual` | Connects to the server endpoint. All sent data is buffered until the connection is made. |
| [`http::Message`](https://auscaster.com/icey/docs/api-reference/icy-http-Message.md#message-1) * | [`incomingHeader`](#incomingheader) `virtual` `override` | Returns the incoming HTTP message header (request or response depending on role). |
| [`http::Message`](https://auscaster.com/icey/docs/api-reference/icy-http-Message.md#message-1) * | [`outgoingHeader`](#outgoingheader) `virtual` `override` | Returns the outgoing HTTP message header (request or response depending on role). |
| `bool` | [`onSocketConnect`](#onsocketconnect-2) `virtual` `override` | [net::SocketAdapter](https://auscaster.com/icey/docs/api-reference/icy-net-SocketAdapter.md#socketadapter) interface |

---

<a id="connect-12"></a>

### connect

`virtual`

```cpp
virtual void connect()
```

[Defined in src/http/include/icy/http/client.h:121](https://github.com/auscaster/icey/blob/main/src/http/include/icy/http/client.h#L121)

Connects to the server endpoint. All sent data is buffered until the connection is made.

---

<a id="incomingheader"></a>

### incomingHeader

`virtual` `override`

```cpp
virtual http::Message * incomingHeader() override
```

[Defined in src/http/include/icy/http/client.h:123](https://github.com/auscaster/icey/blob/main/src/http/include/icy/http/client.h#L123)

Returns the incoming HTTP message header (request or response depending on role).

#### Reimplements

- [`Connection::incomingHeader`](https://auscaster.com/icey/docs/api-reference/icy-http-Connection.md#incomingheader-1)

---

<a id="outgoingheader"></a>

### outgoingHeader

`virtual` `override`

```cpp
virtual http::Message * outgoingHeader() override
```

[Defined in src/http/include/icy/http/client.h:124](https://github.com/auscaster/icey/blob/main/src/http/include/icy/http/client.h#L124)

Returns the outgoing HTTP message header (request or response depending on role).

#### Reimplements

- [`Connection::outgoingHeader`](https://auscaster.com/icey/docs/api-reference/icy-http-Connection.md#outgoingheader-1)

---

<a id="onsocketconnect-2"></a>

### onSocketConnect

`virtual` `override`

```cpp
virtual bool onSocketConnect(net::Socket & socket) override
```

[Defined in src/http/include/icy/http/client.h:126](https://github.com/auscaster/icey/blob/main/src/http/include/icy/http/client.h#L126)

[net::SocketAdapter](https://auscaster.com/icey/docs/api-reference/icy-net-SocketAdapter.md#socketadapter) interface

#### Reimplements

- [`Connection::onSocketConnect`](https://auscaster.com/icey/docs/api-reference/icy-http-Connection.md#onsocketconnect-3)

## Public Types

| Name | Description |
|------|-------------|
| [`Ptr`](#ptr-16)  |  |

---

<a id="ptr-16"></a>

### Ptr

```cpp
using Ptr = std::shared_ptr< ClientConnection >
```

Type: std::shared_ptr< [`ClientConnection`](#clientconnection-1) >

[Defined in src/http/include/icy/http/client.h:36](https://github.com/auscaster/icey/blob/main/src/http/include/icy/http/client.h#L36)

## Private Methods

| Return | Name | Description |
|--------|------|-------------|
| `void` | [`onHeaders`](#onheaders) `virtual` `override` | [Connection](https://auscaster.com/icey/docs/api-reference/icy-http-Connection.md#connection-1) interface. |
| `void` | [`onPayload`](#onpayload) `virtual` `override` | Called for each chunk of incoming response body data. |
| `void` | [`onComplete`](#oncomplete) `virtual` `override` | Called when the full HTTP response has been received. |
| `void` | [`onClose`](#onclose-3) `virtual` `override` | Called when the connection is closed. |
| `bool` | [`onSocketError`](#onsocketerror-2) `virtual` `override` | Called when the underlying transport encounters an error. |

---

<a id="onheaders"></a>

### onHeaders

`virtual` `override`

```cpp
virtual void onHeaders() override
```

[Defined in src/http/include/icy/http/client.h:97](https://github.com/auscaster/icey/blob/main/src/http/include/icy/http/client.h#L97)

[Connection](https://auscaster.com/icey/docs/api-reference/icy-http-Connection.md#connection-1) interface.

Called when the response headers have been parsed.

#### Reimplements

- [`Connection::onHeaders`](https://auscaster.com/icey/docs/api-reference/icy-http-Connection.md#onheaders-1)

---

<a id="onpayload"></a>

### onPayload

`virtual` `override`

```cpp
virtual void onPayload(const MutableBuffer & buffer) override
```

[Defined in src/http/include/icy/http/client.h:99](https://github.com/auscaster/icey/blob/main/src/http/include/icy/http/client.h#L99)

Called for each chunk of incoming response body data.

#### Reimplements

- [`Connection::onPayload`](https://auscaster.com/icey/docs/api-reference/icy-http-Connection.md#onpayload-1)

---

<a id="oncomplete"></a>

### onComplete

`virtual` `override`

```cpp
virtual void onComplete() override
```

[Defined in src/http/include/icy/http/client.h:101](https://github.com/auscaster/icey/blob/main/src/http/include/icy/http/client.h#L101)

Called when the full HTTP response has been received.

#### Reimplements

- [`Connection::onComplete`](https://auscaster.com/icey/docs/api-reference/icy-http-Connection.md#oncomplete-1)

---

<a id="onclose-3"></a>

### onClose

`virtual` `override`

```cpp
virtual void onClose() override
```

[Defined in src/http/include/icy/http/client.h:103](https://github.com/auscaster/icey/blob/main/src/http/include/icy/http/client.h#L103)

Called when the connection is closed.

#### Reimplements

- [`Connection::onClose`](https://auscaster.com/icey/docs/api-reference/icy-http-Connection.md#onclose-4)

---

<a id="onsocketerror-2"></a>

### onSocketError

`virtual` `override`

```cpp
virtual bool onSocketError(net::Socket & socket, const icy::Error & error) override
```

[Defined in src/http/include/icy/http/client.h:105](https://github.com/auscaster/icey/blob/main/src/http/include/icy/http/client.h#L105)

Called when the underlying transport encounters an error.

#### Reimplements

- [`Connection::onSocketError`](https://auscaster.com/icey/docs/api-reference/icy-http-Connection.md#onsocketerror-3)
