# ConnectReq

<a id="connectreq"></a>

# ConnectReq

```cpp
#include <icy/request.h>

struct ConnectReq
```

[Defined in src/base/include/icy/request.h:149](https://github.com/auscaster/icey/blob/main/src/base/include/icy/request.h#L149)

> **Inherits:** [`Request< uv_connect_t >`](https://auscaster.com/icey/docs/api-reference/icy-uv-Request.md#request-2)

Asynchronous connection request for TCP sockets and named pipes.

## List of all members

| Name | Kind | Owner |
|------|------|-------|
| [`ConnectReq`](#connectreq-1) | `function` | Declared here |
| [`connect`](#connect) | `function` | Declared here |
| [`connect`](#connect-1) | `function` | Declared here |
| [`req`](https://auscaster.com/icey/docs/api-reference/icy-uv-Request.md#req-1) | `variable` | Inherited from [`Request`](https://auscaster.com/icey/docs/api-reference/icy-uv-Request.md#request-2) |
| [`callback`](https://auscaster.com/icey/docs/api-reference/icy-uv-Request.md#callback-1) | `variable` | Inherited from [`Request`](https://auscaster.com/icey/docs/api-reference/icy-uv-Request.md#request-2) |
| [`Request`](https://auscaster.com/icey/docs/api-reference/icy-uv-Request.md#request-3) | `function` | Inherited from [`Request`](https://auscaster.com/icey/docs/api-reference/icy-uv-Request.md#request-2) |
| [`invoke`](https://auscaster.com/icey/docs/api-reference/icy-uv-Request.md#invoke-1) | `function` | Inherited from [`Request`](https://auscaster.com/icey/docs/api-reference/icy-uv-Request.md#request-2) |
| [`invoke`](https://auscaster.com/icey/docs/api-reference/icy-uv-Request.md#invoke-2) | `function` | Inherited from [`Request`](https://auscaster.com/icey/docs/api-reference/icy-uv-Request.md#request-2) |
| [`defaultCallback`](https://auscaster.com/icey/docs/api-reference/icy-uv-Request.md#defaultcallback) | `function` | Inherited from [`Request`](https://auscaster.com/icey/docs/api-reference/icy-uv-Request.md#request-2) |
| [`Type`](https://auscaster.com/icey/docs/api-reference/icy-uv-Request.md#type-11) | `typedef` | Inherited from [`Request`](https://auscaster.com/icey/docs/api-reference/icy-uv-Request.md#request-2) |
| [`Event`](https://auscaster.com/icey/docs/api-reference/icy-uv-Request.md#event) | `typedef` | Inherited from [`Request`](https://auscaster.com/icey/docs/api-reference/icy-uv-Request.md#request-2) |

## Inherited from [`Request`](https://auscaster.com/icey/docs/api-reference/icy-uv-Request.md#request-2)

| Kind | Name | Description |
|------|------|-------------|
| `variable` | [`req`](https://auscaster.com/icey/docs/api-reference/icy-uv-Request.md#req-1)  | The underlying libuv request object. |
| `variable` | [`callback`](https://auscaster.com/icey/docs/api-reference/icy-uv-Request.md#callback-1)  | Called when the request completes. |
| `function` | [`Request`](https://auscaster.com/icey/docs/api-reference/icy-uv-Request.md#request-3) `inline` | Construct the request and set `req.data` to `this` so callbacks can recover the wrapper pointer. |
| `function` | [`invoke`](https://auscaster.com/icey/docs/api-reference/icy-uv-Request.md#invoke-1) `inline` `-> std::enable_if_t<!std::is_void< std::invoke_result_t< F, Args... > >::value, int >` | Call `f` with `args`. If `f` returns a non-zero libuv error code, the `callback` is invoked immediately with that status. |
| `function` | [`invoke`](https://auscaster.com/icey/docs/api-reference/icy-uv-Request.md#invoke-2) `inline` `-> std::enable_if_t< std::is_void< std::invoke_result_t< F, Args... > >::value >` | Call `f` with `args`. Overload for void-returning functions; no error checking is performed. |
| `function` | [`defaultCallback`](https://auscaster.com/icey/docs/api-reference/icy-uv-Request.md#defaultcallback) `static` `inline` | Standard libuv completion callback. Invokes `callback` with the status event and then deletes the [`Request`](https://auscaster.com/icey/docs/api-reference/icy-uv-Request.md#request-2) wrapper. |
| `typedef` | [`Type`](https://auscaster.com/icey/docs/api-reference/icy-uv-Request.md#type-11)  |  |
| `typedef` | [`Event`](https://auscaster.com/icey/docs/api-reference/icy-uv-Request.md#event)  |  |

## Public Methods

| Return | Name | Description |
|--------|------|-------------|
|  | [`ConnectReq`](#connectreq-1) `inline` | Construct and set `req.data` to `this`. |
| `auto` | [`connect`](#connect) `inline` | Initiate a TCP connection to `addr` on `handle`. |
| `auto` | [`connect`](#connect-1) `inline` | Initiate a named-pipe connection to `name` on `handle`. |

---

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

### ConnectReq

`inline`

```cpp
inline ConnectReq()
```

[Defined in src/base/include/icy/request.h:152](https://github.com/auscaster/icey/blob/main/src/base/include/icy/request.h#L152)

Construct and set `req.data` to `this`.

---

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

### connect

`inline`

```cpp
inline auto connect(uv_tcp_t * handle, const struct sockaddr * addr)
```

[Defined in src/base/include/icy/request.h:162](https://github.com/auscaster/icey/blob/main/src/base/include/icy/request.h#L162)

Initiate a TCP connection to `addr` on `handle`.

#### Returns
`true` if the connect request was submitted successfully.

#### Parameters

| Parameter | Type | Description |
|-----------|------|-------------|
| `handle` | `uv_tcp_t *` | Initialized `uv_tcp_t` to connect. |
| `addr` | `const struct sockaddr *` | Target address (IPv4 or IPv6 `sockaddr`). |

---

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

### connect

`inline`

```cpp
inline auto connect(uv_pipe_t * handle, const char * name)
```

[Defined in src/base/include/icy/request.h:172](https://github.com/auscaster/icey/blob/main/src/base/include/icy/request.h#L172)

Initiate a named-pipe connection to `name` on `handle`.

#### Returns
`true` if the connect request was submitted successfully.

#### Parameters

| Parameter | Type | Description |
|-----------|------|-------------|
| `handle` | `uv_pipe_t *` | Initialized `uv_pipe_t` to connect. |
| `name` | `const char *` | Filesystem path (Unix) or named-pipe name (Windows). |
