# ws::ConnectionAdapter

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

# ConnectionAdapter

```cpp
#include <websocket.h>

class ConnectionAdapter
```

Defined in src/http/include/icy/http/websocket.h:395

> **Inherits:** [`WebSocketAdapter`](https://sourcey.com/examples/docs-showcase/reference/cpp/icy-http-ws-WebSocketAdapter.md#websocketadapter-1)

[WebSocket](https://sourcey.com/examples/docs-showcase/reference/cpp/icy-http-ws-WebSocket.md#websocket) class which belongs to an HTTP connection.

## List of all members

| Name | Kind | Owner |
|------|------|-------|
| [`ConnectionAdapter`](#connectionadapter-1) | `function` | Declared here |
| [`~ConnectionAdapter`](#connectionadapter-2) | `function` | Declared here |
| [`onHandshakeComplete`](#onhandshakecomplete-1) | `function` | Declared here |
| [`_connection`](#_connection) | `variable` | Declared here |
| [`WebSocketFramer`](https://sourcey.com/examples/docs-showcase/reference/cpp/icy-http-ws-WebSocketAdapter.md#websocketframer-3) | `friend` | Inherited from [`WebSocketAdapter`](https://sourcey.com/examples/docs-showcase/reference/cpp/icy-http-ws-WebSocketAdapter.md#websocketadapter-1) |
| [`socket`](https://sourcey.com/examples/docs-showcase/reference/cpp/icy-http-ws-WebSocketAdapter.md#socket) | `variable` | Inherited from [`WebSocketAdapter`](https://sourcey.com/examples/docs-showcase/reference/cpp/icy-http-ws-WebSocketAdapter.md#websocketadapter-1) |
| [`WebSocketAdapter`](https://sourcey.com/examples/docs-showcase/reference/cpp/icy-http-ws-WebSocketAdapter.md#websocketadapter-2) | `function` | Inherited from [`WebSocketAdapter`](https://sourcey.com/examples/docs-showcase/reference/cpp/icy-http-ws-WebSocketAdapter.md#websocketadapter-1) |
| [`send`](https://sourcey.com/examples/docs-showcase/reference/cpp/icy-http-ws-WebSocketAdapter.md#send) | `function` | Inherited from [`WebSocketAdapter`](https://sourcey.com/examples/docs-showcase/reference/cpp/icy-http-ws-WebSocketAdapter.md#websocketadapter-1) |
| [`send`](https://sourcey.com/examples/docs-showcase/reference/cpp/icy-http-ws-WebSocketAdapter.md#send-1) | `function` | Inherited from [`WebSocketAdapter`](https://sourcey.com/examples/docs-showcase/reference/cpp/icy-http-ws-WebSocketAdapter.md#websocketadapter-1) |
| [`sendOwned`](https://sourcey.com/examples/docs-showcase/reference/cpp/icy-http-ws-WebSocketAdapter.md#sendowned) | `function` | Inherited from [`WebSocketAdapter`](https://sourcey.com/examples/docs-showcase/reference/cpp/icy-http-ws-WebSocketAdapter.md#websocketadapter-1) |
| [`sendOwned`](https://sourcey.com/examples/docs-showcase/reference/cpp/icy-http-ws-WebSocketAdapter.md#sendowned-1) | `function` | Inherited from [`WebSocketAdapter`](https://sourcey.com/examples/docs-showcase/reference/cpp/icy-http-ws-WebSocketAdapter.md#websocketadapter-1) |
| [`shutdown`](https://sourcey.com/examples/docs-showcase/reference/cpp/icy-http-ws-WebSocketAdapter.md#shutdown) | `function` | Inherited from [`WebSocketAdapter`](https://sourcey.com/examples/docs-showcase/reference/cpp/icy-http-ws-WebSocketAdapter.md#websocketadapter-1) |
| [`sendClientRequest`](https://sourcey.com/examples/docs-showcase/reference/cpp/icy-http-ws-WebSocketAdapter.md#sendclientrequest) | `function` | Inherited from [`WebSocketAdapter`](https://sourcey.com/examples/docs-showcase/reference/cpp/icy-http-ws-WebSocketAdapter.md#websocketadapter-1) |
| [`handleClientResponse`](https://sourcey.com/examples/docs-showcase/reference/cpp/icy-http-ws-WebSocketAdapter.md#handleclientresponse) | `function` | Inherited from [`WebSocketAdapter`](https://sourcey.com/examples/docs-showcase/reference/cpp/icy-http-ws-WebSocketAdapter.md#websocketadapter-1) |
| [`handleServerRequest`](https://sourcey.com/examples/docs-showcase/reference/cpp/icy-http-ws-WebSocketAdapter.md#handleserverrequest) | `function` | Inherited from [`WebSocketAdapter`](https://sourcey.com/examples/docs-showcase/reference/cpp/icy-http-ws-WebSocketAdapter.md#websocketadapter-1) |
| [`onHandshakeComplete`](https://sourcey.com/examples/docs-showcase/reference/cpp/icy-http-ws-WebSocketAdapter.md#onhandshakecomplete) | `function` | Inherited from [`WebSocketAdapter`](https://sourcey.com/examples/docs-showcase/reference/cpp/icy-http-ws-WebSocketAdapter.md#websocketadapter-1) |
| [`framer`](https://sourcey.com/examples/docs-showcase/reference/cpp/icy-http-ws-WebSocketAdapter.md#framer) | `variable` | Inherited from [`WebSocketAdapter`](https://sourcey.com/examples/docs-showcase/reference/cpp/icy-http-ws-WebSocketAdapter.md#websocketadapter-1) |
| [`_request`](https://sourcey.com/examples/docs-showcase/reference/cpp/icy-http-ws-WebSocketAdapter.md#_request) | `variable` | Inherited from [`WebSocketAdapter`](https://sourcey.com/examples/docs-showcase/reference/cpp/icy-http-ws-WebSocketAdapter.md#websocketadapter-1) |
| [`_response`](https://sourcey.com/examples/docs-showcase/reference/cpp/icy-http-ws-WebSocketAdapter.md#_response) | `variable` | Inherited from [`WebSocketAdapter`](https://sourcey.com/examples/docs-showcase/reference/cpp/icy-http-ws-WebSocketAdapter.md#websocketadapter-1) |
| [`_closeState`](https://sourcey.com/examples/docs-showcase/reference/cpp/icy-http-ws-WebSocketAdapter.md#_closestate) | `variable` | Inherited from [`WebSocketAdapter`](https://sourcey.com/examples/docs-showcase/reference/cpp/icy-http-ws-WebSocketAdapter.md#websocketadapter-1) |
| [`~WebSocketAdapter`](https://sourcey.com/examples/docs-showcase/reference/cpp/icy-http-ws-WebSocketAdapter.md#websocketadapter-3) | `function` | Inherited from [`WebSocketAdapter`](https://sourcey.com/examples/docs-showcase/reference/cpp/icy-http-ws-WebSocketAdapter.md#websocketadapter-1) |
| [`sendControlFrame`](https://sourcey.com/examples/docs-showcase/reference/cpp/icy-http-ws-WebSocketAdapter.md#sendcontrolframe) | `function` | Inherited from [`WebSocketAdapter`](https://sourcey.com/examples/docs-showcase/reference/cpp/icy-http-ws-WebSocketAdapter.md#websocketadapter-1) |
| [`resetFrameState`](https://sourcey.com/examples/docs-showcase/reference/cpp/icy-http-ws-WebSocketAdapter.md#resetframestate) | `function` | Inherited from [`WebSocketAdapter`](https://sourcey.com/examples/docs-showcase/reference/cpp/icy-http-ws-WebSocketAdapter.md#websocketadapter-1) |
| [`onSocketConnect`](https://sourcey.com/examples/docs-showcase/reference/cpp/icy-http-ws-WebSocketAdapter.md#onsocketconnect) | `function` | Inherited from [`WebSocketAdapter`](https://sourcey.com/examples/docs-showcase/reference/cpp/icy-http-ws-WebSocketAdapter.md#websocketadapter-1) |
| [`onSocketRecv`](https://sourcey.com/examples/docs-showcase/reference/cpp/icy-http-ws-WebSocketAdapter.md#onsocketrecv) | `function` | Inherited from [`WebSocketAdapter`](https://sourcey.com/examples/docs-showcase/reference/cpp/icy-http-ws-WebSocketAdapter.md#websocketadapter-1) |
| [`onSocketClose`](https://sourcey.com/examples/docs-showcase/reference/cpp/icy-http-ws-WebSocketAdapter.md#onsocketclose) | `function` | Inherited from [`WebSocketAdapter`](https://sourcey.com/examples/docs-showcase/reference/cpp/icy-http-ws-WebSocketAdapter.md#websocketadapter-1) |

## Inherited from [`WebSocketAdapter`](https://sourcey.com/examples/docs-showcase/reference/cpp/icy-http-ws-WebSocketAdapter.md#websocketadapter-1)

| Kind | Name | Description |
|------|------|-------------|
| `friend` | [`WebSocketFramer`](https://sourcey.com/examples/docs-showcase/reference/cpp/icy-http-ws-WebSocketAdapter.md#websocketframer-3)  |  |
| `variable` | [`socket`](https://sourcey.com/examples/docs-showcase/reference/cpp/icy-http-ws-WebSocketAdapter.md#socket)  | Pointer to the underlying socket. Sent data will be proxied to this socket. |
| `function` | [`WebSocketAdapter`](https://sourcey.com/examples/docs-showcase/reference/cpp/icy-http-ws-WebSocketAdapter.md#websocketadapter-2)  | Creates a [WebSocketAdapter](https://sourcey.com/examples/docs-showcase/reference/cpp/icy-http-ws-WebSocketAdapter.md#websocketadapter-1) using the given socket, mode and HTTP message objects. |
| `function` | [`send`](https://sourcey.com/examples/docs-showcase/reference/cpp/icy-http-ws-WebSocketAdapter.md#send) `virtual` `override` | Frames and sends data to the peer's address. |
| `function` | [`send`](https://sourcey.com/examples/docs-showcase/reference/cpp/icy-http-ws-WebSocketAdapter.md#send-1) `virtual` `override` | Frames and sends data to a specific peer address (for UDP-backed sockets). |
| `function` | [`sendOwned`](https://sourcey.com/examples/docs-showcase/reference/cpp/icy-http-ws-WebSocketAdapter.md#sendowned) `virtual` `override` |  |
| `function` | [`sendOwned`](https://sourcey.com/examples/docs-showcase/reference/cpp/icy-http-ws-WebSocketAdapter.md#sendowned-1) `virtual` `override` |  |
| `function` | [`shutdown`](https://sourcey.com/examples/docs-showcase/reference/cpp/icy-http-ws-WebSocketAdapter.md#shutdown) `virtual` | Sends a [WebSocket](https://sourcey.com/examples/docs-showcase/reference/cpp/icy-http-ws-WebSocket.md#websocket) CLOSE frame with the given status code and message, then closes the underlying socket. |
| `function` | [`sendClientRequest`](https://sourcey.com/examples/docs-showcase/reference/cpp/icy-http-ws-WebSocketAdapter.md#sendclientrequest) `virtual` | Client side. |
| `function` | [`handleClientResponse`](https://sourcey.com/examples/docs-showcase/reference/cpp/icy-http-ws-WebSocketAdapter.md#handleclientresponse) `virtual` | Parses the server's HTTP upgrade response and completes the handshake. Any data remaining in the buffer after the HTTP response is re-fed as [WebSocket](https://sourcey.com/examples/docs-showcase/reference/cpp/icy-http-ws-WebSocket.md#websocket) frames. |
| `function` | [`handleServerRequest`](https://sourcey.com/examples/docs-showcase/reference/cpp/icy-http-ws-WebSocketAdapter.md#handleserverrequest) `virtual` | Server side. |
| `function` | [`onHandshakeComplete`](https://sourcey.com/examples/docs-showcase/reference/cpp/icy-http-ws-WebSocketAdapter.md#onhandshakecomplete) `virtual` | Called when the [WebSocket](https://sourcey.com/examples/docs-showcase/reference/cpp/icy-http-ws-WebSocket.md#websocket) handshake completes. Emits the connect event to downstream handlers. |
| `variable` | [`framer`](https://sourcey.com/examples/docs-showcase/reference/cpp/icy-http-ws-WebSocketAdapter.md#framer)  |  |
| `variable` | [`_request`](https://sourcey.com/examples/docs-showcase/reference/cpp/icy-http-ws-WebSocketAdapter.md#_request)  |  |
| `variable` | [`_response`](https://sourcey.com/examples/docs-showcase/reference/cpp/icy-http-ws-WebSocketAdapter.md#_response)  |  |
| `variable` | [`_closeState`](https://sourcey.com/examples/docs-showcase/reference/cpp/icy-http-ws-WebSocketAdapter.md#_closestate)  |  |
| `function` | [`~WebSocketAdapter`](https://sourcey.com/examples/docs-showcase/reference/cpp/icy-http-ws-WebSocketAdapter.md#websocketadapter-3) `virtual` |  |
| `function` | [`sendControlFrame`](https://sourcey.com/examples/docs-showcase/reference/cpp/icy-http-ws-WebSocketAdapter.md#sendcontrolframe)  |  |
| `function` | [`resetFrameState`](https://sourcey.com/examples/docs-showcase/reference/cpp/icy-http-ws-WebSocketAdapter.md#resetframestate)  |  |
| `function` | [`onSocketConnect`](https://sourcey.com/examples/docs-showcase/reference/cpp/icy-http-ws-WebSocketAdapter.md#onsocketconnect) `virtual` `override` | Called by the socket on connect; initiates the client handshake. |
| `function` | [`onSocketRecv`](https://sourcey.com/examples/docs-showcase/reference/cpp/icy-http-ws-WebSocketAdapter.md#onsocketrecv) `virtual` `override` | Called by the socket on each received buffer; handles handshake or frame parsing depending on state. |
| `function` | [`onSocketClose`](https://sourcey.com/examples/docs-showcase/reference/cpp/icy-http-ws-WebSocketAdapter.md#onsocketclose) `virtual` `override` | Called by the socket on close; resets framer state. |

## Public Methods

| Return | Name | Description |
|--------|------|-------------|
|  | [`ConnectionAdapter`](#connectionadapter-1)  | Creates a [ConnectionAdapter](#connectionadapter) for upgrading an existing HTTP connection to [WebSocket](https://sourcey.com/examples/docs-showcase/reference/cpp/icy-http-ws-WebSocket.md#websocket). Disables automatic header sending on the underlying connection. |
|  | [`~ConnectionAdapter`](#connectionadapter-2) `virtual` |  |
| `void` | [`onHandshakeComplete`](#onhandshakecomplete-1) `virtual` | Called when the [WebSocket](https://sourcey.com/examples/docs-showcase/reference/cpp/icy-http-ws-WebSocket.md#websocket) handshake completes. Emits the connect event via the socket emitter chain. |

---

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

### ConnectionAdapter

```cpp
ConnectionAdapter(Connection * connection, ws::Mode mode)
```

Defined in src/http/include/icy/http/websocket.h:402

Creates a [ConnectionAdapter](#connectionadapter) for upgrading an existing HTTP connection to [WebSocket](https://sourcey.com/examples/docs-showcase/reference/cpp/icy-http-ws-WebSocket.md#websocket). Disables automatic header sending on the underlying connection.

#### Parameters

| Parameter | Type | Description |
|-----------|------|-------------|
| `connection` | `Connection *` | The HTTP connection to upgrade. |
| `mode` | [`ws::Mode`](api_Mode.md#namespaceicy_1_1http_1_1ws_1aaa1718b12afc4665a0b4a088bdfe6db5) | ServerSide or ClientSide. |

---

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

### ~ConnectionAdapter

`virtual`

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

Defined in src/http/include/icy/http/websocket.h:403

---

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

### onHandshakeComplete

`virtual`

```cpp
virtual void onHandshakeComplete()
```

Defined in src/http/include/icy/http/websocket.h:407

Called when the [WebSocket](https://sourcey.com/examples/docs-showcase/reference/cpp/icy-http-ws-WebSocket.md#websocket) handshake completes. Emits the connect event via the socket emitter chain.

#### Reimplements

- [`WebSocketAdapter::onHandshakeComplete`](https://sourcey.com/examples/docs-showcase/reference/cpp/icy-http-ws-WebSocketAdapter.md#onhandshakecomplete)

## Protected Attributes

| Return | Name | Description |
|--------|------|-------------|
| `Connection *` | [`_connection`](#_connection)  |  |

---

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

### _connection

```cpp
Connection * _connection
```

Defined in src/http/include/icy/http/websocket.h:410
