# ConnectionAdapter

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

# ConnectionAdapter

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

class ConnectionAdapter
```

[Defined in src/http/include/icy/http/connection.h:160](https://github.com/auscaster/icey/blob/main/src/http/include/icy/http/connection.h#L160)

> **Inherits:** [`ParserObserver`](https://auscaster.com/icey/docs/api-reference/icy-http-ParserObserver.md#parserobserver), [`SocketAdapter`](https://auscaster.com/icey/docs/api-reference/icy-net-SocketAdapter.md#socketadapter)

Default HTTP socket adapter for reading and writing HTTP messages

## List of all members

| Name | Kind | Owner |
|------|------|-------|
| [`ConnectionAdapter`](#connectionadapter-2) | `function` | Declared here |
| [`~ConnectionAdapter`](#connectionadapter-3) | `function` | Declared here |
| [`send`](#send-13) | `function` | Declared here |
| [`sendOwned`](#sendowned-11) | `function` | Declared here |
| [`removeReceiver`](#removereceiver-2) | `function` | Declared here |
| [`parser`](#parser) | `function` | Declared here |
| [`connection`](#connection-4) | `function` | Declared here |
| [`reset`](#reset-16) | `function` | Declared here |
| [`_connection`](#_connection) | `variable` | Declared here |
| [`_parser`](#_parser) | `variable` | Declared here |
| [`onSocketRecv`](#onsocketrecv-4) | `function` | Declared here |
| [`onParserHeader`](#onparserheader) | `function` | Declared here |
| [`onParserHeadersEnd`](#onparserheadersend) | `function` | Declared here |
| [`onParserChunk`](#onparserchunk) | `function` | Declared here |
| [`onParserError`](#onparsererror) | `function` | Declared here |
| [`onParserEnd`](#onparserend) | `function` | Declared here |
| [`onParserHeader`](https://auscaster.com/icey/docs/api-reference/icy-http-ParserObserver.md#onparserheader-1) | `function` | Inherited from [`ParserObserver`](https://auscaster.com/icey/docs/api-reference/icy-http-ParserObserver.md#parserobserver) |
| [`onParserHeadersEnd`](https://auscaster.com/icey/docs/api-reference/icy-http-ParserObserver.md#onparserheadersend-1) | `function` | Inherited from [`ParserObserver`](https://auscaster.com/icey/docs/api-reference/icy-http-ParserObserver.md#parserobserver) |
| [`onParserChunk`](https://auscaster.com/icey/docs/api-reference/icy-http-ParserObserver.md#onparserchunk-1) | `function` | Inherited from [`ParserObserver`](https://auscaster.com/icey/docs/api-reference/icy-http-ParserObserver.md#parserobserver) |
| [`onParserEnd`](https://auscaster.com/icey/docs/api-reference/icy-http-ParserObserver.md#onparserend-1) | `function` | Inherited from [`ParserObserver`](https://auscaster.com/icey/docs/api-reference/icy-http-ParserObserver.md#parserobserver) |
| [`onParserError`](https://auscaster.com/icey/docs/api-reference/icy-http-ParserObserver.md#onparsererror-1) | `function` | Inherited from [`ParserObserver`](https://auscaster.com/icey/docs/api-reference/icy-http-ParserObserver.md#parserobserver) |
| [`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 [`ParserObserver`](https://auscaster.com/icey/docs/api-reference/icy-http-ParserObserver.md#parserobserver)

| Kind | Name | Description |
|------|------|-------------|
| `function` | [`onParserHeader`](https://auscaster.com/icey/docs/api-reference/icy-http-ParserObserver.md#onparserheader-1) `virtual` | Called for each parsed HTTP header name/value pair. |
| `function` | [`onParserHeadersEnd`](https://auscaster.com/icey/docs/api-reference/icy-http-ParserObserver.md#onparserheadersend-1) `virtual` | Called when all HTTP headers have been parsed. |
| `function` | [`onParserChunk`](https://auscaster.com/icey/docs/api-reference/icy-http-ParserObserver.md#onparserchunk-1) `virtual` | Called for each chunk of body data received. |
| `function` | [`onParserEnd`](https://auscaster.com/icey/docs/api-reference/icy-http-ParserObserver.md#onparserend-1) `virtual` | Called when the HTTP message is fully parsed. |
| `function` | [`onParserError`](https://auscaster.com/icey/docs/api-reference/icy-http-ParserObserver.md#onparsererror-1) `virtual` | Called when a parse error occurs. |

## 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 Methods

| Return | Name | Description |
|--------|------|-------------|
|  | [`ConnectionAdapter`](#connectionadapter-2)  | Creates a [ConnectionAdapter](#connectionadapter-1) for the given connection. |
|  | [`~ConnectionAdapter`](#connectionadapter-3) `virtual` |  |
| `ssize_t` | [`send`](#send-13) `virtual` `override` | Sends data to the peer, flushing the outgoing HTTP header first if needed. |
| `ssize_t` | [`sendOwned`](#sendowned-11) `virtual` `override` | Sends an owned payload buffer to the connected peer. |
| `void` | [`removeReceiver`](#removereceiver-2) `override` | Remove the given receiver. |
| [`Parser`](https://auscaster.com/icey/docs/api-reference/icy-http-Parser.md#parser-1) & | [`parser`](#parser)  | Returns the HTTP parser instance. |
| [`Connection`](https://auscaster.com/icey/docs/api-reference/icy-http-Connection.md#connection-1) * | [`connection`](#connection-4)  | Returns the owning [Connection](https://auscaster.com/icey/docs/api-reference/icy-http-Connection.md#connection-1) pointer, or nullptr if detached. |
| `void` | [`reset`](#reset-16)  | Resets the adapter for reuse with a new socket and request. Clears the parser state and re-wires the sender without reallocating. Used by the connection pool to avoid destroying/recreating adapters. |

---

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

### ConnectionAdapter

```cpp
ConnectionAdapter(Connection * connection, llhttp_type_t type)
```

[Defined in src/http/include/icy/http/connection.h:167](https://github.com/auscaster/icey/blob/main/src/http/include/icy/http/connection.h#L167)

Creates a [ConnectionAdapter](#connectionadapter-1) for the given connection.

#### Parameters

| Parameter | Type | Description |
|-----------|------|-------------|
| `connection` | [`Connection`](https://auscaster.com/icey/docs/api-reference/icy-http-Connection.md#connection-1) * | Owning HTTP connection. |
| `type` | `llhttp_type_t` | [Parser](https://auscaster.com/icey/docs/api-reference/icy-http-Parser.md#parser-1) type: HTTP_REQUEST for server side, HTTP_RESPONSE for client side. |

---

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

### ~ConnectionAdapter

`virtual`

```cpp
virtual ~ConnectionAdapter()
```

[Defined in src/http/include/icy/http/connection.h:168](https://github.com/auscaster/icey/blob/main/src/http/include/icy/http/connection.h#L168)

---

<a id="send-13"></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/connection.h:175](https://github.com/auscaster/icey/blob/main/src/http/include/icy/http/connection.h#L175)

Sends data to the peer, flushing the outgoing HTTP header first if needed. 
#### Returns
Number of bytes sent, or -1 on error.

#### Reimplements

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

#### Parameters

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

---

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

### sendOwned

`virtual` `override`

```cpp
virtual ssize_t sendOwned(Buffer && buffer, int flags = 0) override
```

[Defined in src/http/include/icy/http/connection.h:176](https://github.com/auscaster/icey/blob/main/src/http/include/icy/http/connection.h#L176)

Sends an owned payload buffer to the connected peer.

The buffer is moved through the adapter chain and retained by the transport layer until async write completion.

#### Reimplements

- [`SocketAdapter::sendOwned`](https://auscaster.com/icey/docs/api-reference/icy-net-SocketAdapter.md#sendowned-2)

---

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

### removeReceiver

`override`

```cpp
void removeReceiver(SocketAdapter * adapter) override
```

[Defined in src/http/include/icy/http/connection.h:182](https://github.com/auscaster/icey/blob/main/src/http/include/icy/http/connection.h#L182)

Remove the given receiver.

By default this function does nothing unless the given receiver matches the current receiver.

---

<a id="parser"></a>

### parser

```cpp
Parser & parser()
```

[Defined in src/http/include/icy/http/connection.h:185](https://github.com/auscaster/icey/blob/main/src/http/include/icy/http/connection.h#L185)

Returns the HTTP parser instance.

---

<a id="connection-4"></a>

### connection

```cpp
Connection * connection()
```

[Defined in src/http/include/icy/http/connection.h:188](https://github.com/auscaster/icey/blob/main/src/http/include/icy/http/connection.h#L188)

Returns the owning [Connection](https://auscaster.com/icey/docs/api-reference/icy-http-Connection.md#connection-1) pointer, or nullptr if detached.

---

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

### reset

```cpp
void reset(net::SocketAdapter * sender, http::Request * request)
```

[Defined in src/http/include/icy/http/connection.h:195](https://github.com/auscaster/icey/blob/main/src/http/include/icy/http/connection.h#L195)

Resets the adapter for reuse with a new socket and request. Clears the parser state and re-wires the sender without reallocating. Used by the connection pool to avoid destroying/recreating adapters.

#### Parameters

| Parameter | Type | Description |
|-----------|------|-------------|
| `sender` | [`net::SocketAdapter`](https://auscaster.com/icey/docs/api-reference/icy-net-SocketAdapter.md#socketadapter) * | New socket adapter to send data through. |
| `request` | [`http::Request`](https://auscaster.com/icey/docs/api-reference/icy-http-Request.md#request-6) * | New HTTP request object for the parser to populate. |

## Protected Attributes

| Return | Name | Description |
|--------|------|-------------|
| [`Connection`](https://auscaster.com/icey/docs/api-reference/icy-http-Connection.md#connection-1) * | [`_connection`](#_connection)  |  |
| [`Parser`](https://auscaster.com/icey/docs/api-reference/icy-http-Parser.md#parser-1) | [`_parser`](#_parser)  |  |

---

<a id="_connection"></a>

### _connection

```cpp
Connection * _connection
```

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

[Defined in src/http/include/icy/http/connection.h:208](https://github.com/auscaster/icey/blob/main/src/http/include/icy/http/connection.h#L208)

---

<a id="_parser"></a>

### _parser

```cpp
Parser _parser
```

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

[Defined in src/http/include/icy/http/connection.h:209](https://github.com/auscaster/icey/blob/main/src/http/include/icy/http/connection.h#L209)

## Protected Methods

| Return | Name | Description |
|--------|------|-------------|
| `bool` | [`onSocketRecv`](#onsocketrecv-4) `virtual` `override` | SocketAdapter interface. |
| `void` | [`onParserHeader`](#onparserheader) `virtual` `override` | HTTP [Parser](https://auscaster.com/icey/docs/api-reference/icy-http-Parser.md#parser-1) interface. |
| `void` | [`onParserHeadersEnd`](#onparserheadersend) `virtual` `override` | Called when all HTTP headers have been parsed. |
| `void` | [`onParserChunk`](#onparserchunk) `virtual` `override` | Called for each chunk of body data received. |
| `void` | [`onParserError`](#onparsererror) `virtual` `override` | Called when a parse error occurs. |
| `void` | [`onParserEnd`](#onparserend) `virtual` `override` | Called when the HTTP message is fully parsed. |

---

<a id="onsocketrecv-4"></a>

### onSocketRecv

`virtual` `override`

```cpp
virtual bool onSocketRecv(net::Socket & socket, const MutableBuffer & buffer, const net::Address & peerAddress) override
```

[Defined in src/http/include/icy/http/connection.h:199](https://github.com/auscaster/icey/blob/main/src/http/include/icy/http/connection.h#L199)

SocketAdapter interface.

#### Reimplements

- [`SocketAdapter::onSocketRecv`](https://auscaster.com/icey/docs/api-reference/icy-net-SocketAdapter.md#onsocketrecv-1)

---

<a id="onparserheader"></a>

### onParserHeader

`virtual` `override`

```cpp
virtual void onParserHeader(const std::string & name, const std::string & value) override
```

[Defined in src/http/include/icy/http/connection.h:202](https://github.com/auscaster/icey/blob/main/src/http/include/icy/http/connection.h#L202)

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

#### Reimplements

- [`ParserObserver::onParserHeader`](https://auscaster.com/icey/docs/api-reference/icy-http-ParserObserver.md#onparserheader-1)

---

<a id="onparserheadersend"></a>

### onParserHeadersEnd

`virtual` `override`

```cpp
virtual void onParserHeadersEnd(bool upgrade) override
```

[Defined in src/http/include/icy/http/connection.h:203](https://github.com/auscaster/icey/blob/main/src/http/include/icy/http/connection.h#L203)

Called when all HTTP headers have been parsed.

#### Reimplements

- [`ParserObserver::onParserHeadersEnd`](https://auscaster.com/icey/docs/api-reference/icy-http-ParserObserver.md#onparserheadersend-1)

#### Parameters

| Parameter | Type | Description |
|-----------|------|-------------|
| `upgrade` | `bool` | True if the connection should be upgraded (e.g. to WebSocket). |

---

<a id="onparserchunk"></a>

### onParserChunk

`virtual` `override`

```cpp
virtual void onParserChunk(const char * data, size_t len) override
```

[Defined in src/http/include/icy/http/connection.h:204](https://github.com/auscaster/icey/blob/main/src/http/include/icy/http/connection.h#L204)

Called for each chunk of body data received.

#### Reimplements

- [`ParserObserver::onParserChunk`](https://auscaster.com/icey/docs/api-reference/icy-http-ParserObserver.md#onparserchunk-1)

#### Parameters

| Parameter | Type | Description |
|-----------|------|-------------|
| `data` | `const char *` | Pointer to the body data chunk. |
| `len` | `size_t` | Length of the chunk in bytes. |

---

<a id="onparsererror"></a>

### onParserError

`virtual` `override`

```cpp
virtual void onParserError(const icy::Error & err) override
```

[Defined in src/http/include/icy/http/connection.h:205](https://github.com/auscaster/icey/blob/main/src/http/include/icy/http/connection.h#L205)

Called when a parse error occurs.

#### Reimplements

- [`ParserObserver::onParserError`](https://auscaster.com/icey/docs/api-reference/icy-http-ParserObserver.md#onparsererror-1)

#### Parameters

| Parameter | Type | Description |
|-----------|------|-------------|
| `err` | const [`icy::Error`](https://auscaster.com/icey/docs/api-reference/icy-Error.md#error) & | [Error](https://auscaster.com/icey/docs/api-reference/icy-Error.md#error) details from llhttp. |

---

<a id="onparserend"></a>

### onParserEnd

`virtual` `override`

```cpp
virtual void onParserEnd() override
```

[Defined in src/http/include/icy/http/connection.h:206](https://github.com/auscaster/icey/blob/main/src/http/include/icy/http/connection.h#L206)

Called when the HTTP message is fully parsed.

#### Reimplements

- [`ParserObserver::onParserEnd`](https://auscaster.com/icey/docs/api-reference/icy-http-ParserObserver.md#onparserend-1)
