# SSLSocket

<a id="sslsocket"></a>

# SSLSocket

```cpp
#include <icy/net/sslsocket.h>

class SSLSocket
```

[Defined in src/net/include/icy/net/sslsocket.h:30](https://github.com/auscaster/icey/blob/main/src/net/include/icy/net/sslsocket.h#L30)

> **Inherits:** [`TCPSocket`](https://auscaster.com/icey/docs/api-reference/icy-net-TCPSocket.md#tcpsocket)

SSL socket implementation.

## List of all members

| Name | Kind | Owner |
|------|------|-------|
| [`SSLAdapter`](#net-ssladapter) | `friend` | Declared here |
| [`SSLSocket`](#sslsocket-1) | `function` | Declared here |
| [`SSLSocket`](#sslsocket-2) | `function` | Declared here |
| [`SSLSocket`](#sslsocket-3) | `function` | Declared here |
| [`~SSLSocket`](#sslsocket-4) | `function` | Declared here |
| [`connect`](#connect-5) | `function` | Declared here |
| [`connect`](#connect-6) | `function` | Declared here |
| [`bind`](#bind-1) | `function` | Declared here |
| [`listen`](#listen-1) | `function` | Declared here |
| [`shutdown`](#shutdown-6) | `function` | Declared here |
| [`close`](#close-21) | `function` | Declared here |
| [`send`](#send-3) | `function` | Declared here |
| [`sendOwned`](#sendowned-4) | `function` | Declared here |
| [`send`](#send-4) | `function` | Declared here |
| [`sendOwned`](#sendowned-5) | `function` | Declared here |
| [`setHostname`](#sethostname-1) | `function` | Declared here |
| [`useContext`](#usecontext) | `function` | Declared here |
| [`context`](#context-6) | `function` | Declared here |
| [`useSession`](#usesession) | `function` | Declared here |
| [`currentSession`](#currentsession) | `function` | Declared here |
| [`sessionWasReused`](#sessionwasreused) | `function` | Declared here |
| [`available`](#available-4) | `function` | Declared here |
| [`peerCertificate`](#peercertificate) | `function` | Declared here |
| [`transport`](#transport-1) | `function` | Declared here |
| [`acceptConnection`](#acceptconnection) | `function` | Declared here |
| [`onConnect`](#onconnect) | `function` | Declared here |
| [`onRead`](#onread-1) | `function` | Declared here |
| [`_sslContext`](#_sslcontext-1) | `variable` | Declared here |
| [`_sslSession`](#_sslsession) | `variable` | Declared here |
| [`_sslAdapter`](#_ssladapter) | `variable` | Declared here |
| [`Ptr`](#ptr-13) | `typedef` | Declared here |
| [`Vec`](#vec-1) | `typedef` | Declared here |
| [`AcceptConnection`](https://auscaster.com/icey/docs/api-reference/icy-net-TCPSocket.md#acceptconnection-1) | `variable` | Inherited from [`TCPSocket`](https://auscaster.com/icey/docs/api-reference/icy-net-TCPSocket.md#tcpsocket) |
| [`TCPSocket`](https://auscaster.com/icey/docs/api-reference/icy-net-TCPSocket.md#tcpsocket-1) | `function` | Inherited from [`TCPSocket`](https://auscaster.com/icey/docs/api-reference/icy-net-TCPSocket.md#tcpsocket) |
| [`~TCPSocket`](https://auscaster.com/icey/docs/api-reference/icy-net-TCPSocket.md#tcpsocket-2) | `function` | Inherited from [`TCPSocket`](https://auscaster.com/icey/docs/api-reference/icy-net-TCPSocket.md#tcpsocket) |
| [`TCPSocket`](https://auscaster.com/icey/docs/api-reference/icy-net-TCPSocket.md#tcpsocket-3) | `function` | Inherited from [`TCPSocket`](https://auscaster.com/icey/docs/api-reference/icy-net-TCPSocket.md#tcpsocket) |
| [`operator=`](https://auscaster.com/icey/docs/api-reference/icy-net-TCPSocket.md#operator-189) | `function` | Inherited from [`TCPSocket`](https://auscaster.com/icey/docs/api-reference/icy-net-TCPSocket.md#tcpsocket) |
| [`TCPSocket`](https://auscaster.com/icey/docs/api-reference/icy-net-TCPSocket.md#tcpsocket-4) | `function` | Inherited from [`TCPSocket`](https://auscaster.com/icey/docs/api-reference/icy-net-TCPSocket.md#tcpsocket) |
| [`operator=`](https://auscaster.com/icey/docs/api-reference/icy-net-TCPSocket.md#operator-190) | `function` | Inherited from [`TCPSocket`](https://auscaster.com/icey/docs/api-reference/icy-net-TCPSocket.md#tcpsocket) |
| [`shutdown`](https://auscaster.com/icey/docs/api-reference/icy-net-TCPSocket.md#shutdown-7) | `function` | Inherited from [`TCPSocket`](https://auscaster.com/icey/docs/api-reference/icy-net-TCPSocket.md#tcpsocket) |
| [`close`](https://auscaster.com/icey/docs/api-reference/icy-net-TCPSocket.md#close-22) | `function` | Inherited from [`TCPSocket`](https://auscaster.com/icey/docs/api-reference/icy-net-TCPSocket.md#tcpsocket) |
| [`connect`](https://auscaster.com/icey/docs/api-reference/icy-net-TCPSocket.md#connect-7) | `function` | Inherited from [`TCPSocket`](https://auscaster.com/icey/docs/api-reference/icy-net-TCPSocket.md#tcpsocket) |
| [`connect`](https://auscaster.com/icey/docs/api-reference/icy-net-TCPSocket.md#connect-8) | `function` | Inherited from [`TCPSocket`](https://auscaster.com/icey/docs/api-reference/icy-net-TCPSocket.md#tcpsocket) |
| [`send`](https://auscaster.com/icey/docs/api-reference/icy-net-TCPSocket.md#send-5) | `function` | Inherited from [`TCPSocket`](https://auscaster.com/icey/docs/api-reference/icy-net-TCPSocket.md#tcpsocket) |
| [`sendOwned`](https://auscaster.com/icey/docs/api-reference/icy-net-TCPSocket.md#sendowned-6) | `function` | Inherited from [`TCPSocket`](https://auscaster.com/icey/docs/api-reference/icy-net-TCPSocket.md#tcpsocket) |
| [`send`](https://auscaster.com/icey/docs/api-reference/icy-net-TCPSocket.md#send-6) | `function` | Inherited from [`TCPSocket`](https://auscaster.com/icey/docs/api-reference/icy-net-TCPSocket.md#tcpsocket) |
| [`sendOwned`](https://auscaster.com/icey/docs/api-reference/icy-net-TCPSocket.md#sendowned-7) | `function` | Inherited from [`TCPSocket`](https://auscaster.com/icey/docs/api-reference/icy-net-TCPSocket.md#tcpsocket) |
| [`bind`](https://auscaster.com/icey/docs/api-reference/icy-net-TCPSocket.md#bind-2) | `function` | Inherited from [`TCPSocket`](https://auscaster.com/icey/docs/api-reference/icy-net-TCPSocket.md#tcpsocket) |
| [`listen`](https://auscaster.com/icey/docs/api-reference/icy-net-TCPSocket.md#listen-2) | `function` | Inherited from [`TCPSocket`](https://auscaster.com/icey/docs/api-reference/icy-net-TCPSocket.md#tcpsocket) |
| [`acceptConnection`](https://auscaster.com/icey/docs/api-reference/icy-net-TCPSocket.md#acceptconnection-2) | `function` | Inherited from [`TCPSocket`](https://auscaster.com/icey/docs/api-reference/icy-net-TCPSocket.md#tcpsocket) |
| [`setReusePort`](https://auscaster.com/icey/docs/api-reference/icy-net-TCPSocket.md#setreuseport) | `function` | Inherited from [`TCPSocket`](https://auscaster.com/icey/docs/api-reference/icy-net-TCPSocket.md#tcpsocket) |
| [`setNoDelay`](https://auscaster.com/icey/docs/api-reference/icy-net-TCPSocket.md#setnodelay) | `function` | Inherited from [`TCPSocket`](https://auscaster.com/icey/docs/api-reference/icy-net-TCPSocket.md#tcpsocket) |
| [`setKeepAlive`](https://auscaster.com/icey/docs/api-reference/icy-net-TCPSocket.md#setkeepalive) | `function` | Inherited from [`TCPSocket`](https://auscaster.com/icey/docs/api-reference/icy-net-TCPSocket.md#tcpsocket) |
| [`setSimultaneousAccepts`](https://auscaster.com/icey/docs/api-reference/icy-net-TCPSocket.md#setsimultaneousaccepts) | `function` | Inherited from [`TCPSocket`](https://auscaster.com/icey/docs/api-reference/icy-net-TCPSocket.md#tcpsocket) |
| [`setMode`](https://auscaster.com/icey/docs/api-reference/icy-net-TCPSocket.md#setmode) | `function` | Inherited from [`TCPSocket`](https://auscaster.com/icey/docs/api-reference/icy-net-TCPSocket.md#tcpsocket) |
| [`mode`](https://auscaster.com/icey/docs/api-reference/icy-net-TCPSocket.md#mode) | `function` | Inherited from [`TCPSocket`](https://auscaster.com/icey/docs/api-reference/icy-net-TCPSocket.md#tcpsocket) |
| [`setError`](https://auscaster.com/icey/docs/api-reference/icy-net-TCPSocket.md#seterror-3) | `function` | Inherited from [`TCPSocket`](https://auscaster.com/icey/docs/api-reference/icy-net-TCPSocket.md#tcpsocket) |
| [`error`](https://auscaster.com/icey/docs/api-reference/icy-net-TCPSocket.md#error-14) | `function` | Inherited from [`TCPSocket`](https://auscaster.com/icey/docs/api-reference/icy-net-TCPSocket.md#tcpsocket) |
| [`closed`](https://auscaster.com/icey/docs/api-reference/icy-net-TCPSocket.md#closed-4) | `function` | Inherited from [`TCPSocket`](https://auscaster.com/icey/docs/api-reference/icy-net-TCPSocket.md#tcpsocket) |
| [`address`](https://auscaster.com/icey/docs/api-reference/icy-net-TCPSocket.md#address-9) | `function` | Inherited from [`TCPSocket`](https://auscaster.com/icey/docs/api-reference/icy-net-TCPSocket.md#tcpsocket) |
| [`peerAddress`](https://auscaster.com/icey/docs/api-reference/icy-net-TCPSocket.md#peeraddress-2) | `function` | Inherited from [`TCPSocket`](https://auscaster.com/icey/docs/api-reference/icy-net-TCPSocket.md#tcpsocket) |
| [`transport`](https://auscaster.com/icey/docs/api-reference/icy-net-TCPSocket.md#transport-2) | `function` | Inherited from [`TCPSocket`](https://auscaster.com/icey/docs/api-reference/icy-net-TCPSocket.md#tcpsocket) |
| [`loop`](https://auscaster.com/icey/docs/api-reference/icy-net-TCPSocket.md#loop-5) | `function` | Inherited from [`TCPSocket`](https://auscaster.com/icey/docs/api-reference/icy-net-TCPSocket.md#tcpsocket) |
| [`onConnect`](https://auscaster.com/icey/docs/api-reference/icy-net-TCPSocket.md#onconnect-1) | `function` | Inherited from [`TCPSocket`](https://auscaster.com/icey/docs/api-reference/icy-net-TCPSocket.md#tcpsocket) |
| [`onRead`](https://auscaster.com/icey/docs/api-reference/icy-net-TCPSocket.md#onread-2) | `function` | Inherited from [`TCPSocket`](https://auscaster.com/icey/docs/api-reference/icy-net-TCPSocket.md#tcpsocket) |
| [`onRecv`](https://auscaster.com/icey/docs/api-reference/icy-net-TCPSocket.md#onrecv) | `function` | Inherited from [`TCPSocket`](https://auscaster.com/icey/docs/api-reference/icy-net-TCPSocket.md#tcpsocket) |
| [`onError`](https://auscaster.com/icey/docs/api-reference/icy-net-TCPSocket.md#onerror-1) | `function` | Inherited from [`TCPSocket`](https://auscaster.com/icey/docs/api-reference/icy-net-TCPSocket.md#tcpsocket) |
| [`onClose`](https://auscaster.com/icey/docs/api-reference/icy-net-TCPSocket.md#onclose-1) | `function` | Inherited from [`TCPSocket`](https://auscaster.com/icey/docs/api-reference/icy-net-TCPSocket.md#tcpsocket) |
| [`_mode`](https://auscaster.com/icey/docs/api-reference/icy-net-TCPSocket.md#_mode-1) | `variable` | Inherited from [`TCPSocket`](https://auscaster.com/icey/docs/api-reference/icy-net-TCPSocket.md#tcpsocket) |
| [`_peerAddress`](https://auscaster.com/icey/docs/api-reference/icy-net-TCPSocket.md#_peeraddress) | `variable` | Inherited from [`TCPSocket`](https://auscaster.com/icey/docs/api-reference/icy-net-TCPSocket.md#tcpsocket) |
| [`_peerAddressCached`](https://auscaster.com/icey/docs/api-reference/icy-net-TCPSocket.md#_peeraddresscached) | `variable` | Inherited from [`TCPSocket`](https://auscaster.com/icey/docs/api-reference/icy-net-TCPSocket.md#tcpsocket) |
| [`init`](https://auscaster.com/icey/docs/api-reference/icy-net-TCPSocket.md#init-11) | `function` | Inherited from [`TCPSocket`](https://auscaster.com/icey/docs/api-reference/icy-net-TCPSocket.md#tcpsocket) |
| [`reset`](https://auscaster.com/icey/docs/api-reference/icy-net-TCPSocket.md#reset-14) | `function` | Inherited from [`TCPSocket`](https://auscaster.com/icey/docs/api-reference/icy-net-TCPSocket.md#tcpsocket) |
| [`Ptr`](https://auscaster.com/icey/docs/api-reference/icy-net-TCPSocket.md#ptr-14) | `typedef` | Inherited from [`TCPSocket`](https://auscaster.com/icey/docs/api-reference/icy-net-TCPSocket.md#tcpsocket) |
| [`Vec`](https://auscaster.com/icey/docs/api-reference/icy-net-TCPSocket.md#vec-2) | `typedef` | Inherited from [`TCPSocket`](https://auscaster.com/icey/docs/api-reference/icy-net-TCPSocket.md#tcpsocket) |
| [`Read`](https://auscaster.com/icey/docs/api-reference/icy-Stream.md#read-3) | `variable` | Inherited from [`Stream`](https://auscaster.com/icey/docs/api-reference/icy-Stream.md#stream) |
| [`Stream`](https://auscaster.com/icey/docs/api-reference/icy-Stream.md#stream-1) | `function` | Inherited from [`Stream`](https://auscaster.com/icey/docs/api-reference/icy-Stream.md#stream) |
| [`~Stream`](https://auscaster.com/icey/docs/api-reference/icy-Stream.md#stream-2) | `function` | Inherited from [`Stream`](https://auscaster.com/icey/docs/api-reference/icy-Stream.md#stream) |
| [`close`](https://auscaster.com/icey/docs/api-reference/icy-Stream.md#close-5) | `function` | Inherited from [`Stream`](https://auscaster.com/icey/docs/api-reference/icy-Stream.md#stream) |
| [`shutdown`](https://auscaster.com/icey/docs/api-reference/icy-Stream.md#shutdown) | `function` | Inherited from [`Stream`](https://auscaster.com/icey/docs/api-reference/icy-Stream.md#stream) |
| [`write`](https://auscaster.com/icey/docs/api-reference/icy-Stream.md#write-16) | `function` | Inherited from [`Stream`](https://auscaster.com/icey/docs/api-reference/icy-Stream.md#stream) |
| [`writeOwned`](https://auscaster.com/icey/docs/api-reference/icy-Stream.md#writeowned) | `function` | Inherited from [`Stream`](https://auscaster.com/icey/docs/api-reference/icy-Stream.md#stream) |
| [`setHighWaterMark`](https://auscaster.com/icey/docs/api-reference/icy-Stream.md#sethighwatermark) | `function` | Inherited from [`Stream`](https://auscaster.com/icey/docs/api-reference/icy-Stream.md#stream) |
| [`write`](https://auscaster.com/icey/docs/api-reference/icy-Stream.md#write-17) | `function` | Inherited from [`Stream`](https://auscaster.com/icey/docs/api-reference/icy-Stream.md#stream) |
| [`stream`](https://auscaster.com/icey/docs/api-reference/icy-Stream.md#stream-3) | `function` | Inherited from [`Stream`](https://auscaster.com/icey/docs/api-reference/icy-Stream.md#stream) |
| [`_buffer`](https://auscaster.com/icey/docs/api-reference/icy-Stream.md#_buffer-1) | `variable` | Inherited from [`Stream`](https://auscaster.com/icey/docs/api-reference/icy-Stream.md#stream) |
| [`_started`](https://auscaster.com/icey/docs/api-reference/icy-Stream.md#_started-1) | `variable` | Inherited from [`Stream`](https://auscaster.com/icey/docs/api-reference/icy-Stream.md#stream) |
| [`_highWaterMark`](https://auscaster.com/icey/docs/api-reference/icy-Stream.md#_highwatermark) | `variable` | Inherited from [`Stream`](https://auscaster.com/icey/docs/api-reference/icy-Stream.md#stream) |
| [`_writeReqFree`](https://auscaster.com/icey/docs/api-reference/icy-Stream.md#_writereqfree) | `variable` | Inherited from [`Stream`](https://auscaster.com/icey/docs/api-reference/icy-Stream.md#stream) |
| [`_ownedWriteReqFree`](https://auscaster.com/icey/docs/api-reference/icy-Stream.md#_ownedwritereqfree) | `variable` | Inherited from [`Stream`](https://auscaster.com/icey/docs/api-reference/icy-Stream.md#stream) |
| [`readStart`](https://auscaster.com/icey/docs/api-reference/icy-Stream.md#readstart-1) | `function` | Inherited from [`Stream`](https://auscaster.com/icey/docs/api-reference/icy-Stream.md#stream) |
| [`readStop`](https://auscaster.com/icey/docs/api-reference/icy-Stream.md#readstop) | `function` | Inherited from [`Stream`](https://auscaster.com/icey/docs/api-reference/icy-Stream.md#stream) |
| [`onRead`](https://auscaster.com/icey/docs/api-reference/icy-Stream.md#onread) | `function` | Inherited from [`Stream`](https://auscaster.com/icey/docs/api-reference/icy-Stream.md#stream) |
| [`allocWriteReq`](https://auscaster.com/icey/docs/api-reference/icy-Stream.md#allocwritereq) | `function` | Inherited from [`Stream`](https://auscaster.com/icey/docs/api-reference/icy-Stream.md#stream) |
| [`freeWriteReq`](https://auscaster.com/icey/docs/api-reference/icy-Stream.md#freewritereq) | `function` | Inherited from [`Stream`](https://auscaster.com/icey/docs/api-reference/icy-Stream.md#stream) |
| [`allocOwnedWriteReq`](https://auscaster.com/icey/docs/api-reference/icy-Stream.md#allocownedwritereq) | `function` | Inherited from [`Stream`](https://auscaster.com/icey/docs/api-reference/icy-Stream.md#stream) |
| [`freeOwnedWriteReq`](https://auscaster.com/icey/docs/api-reference/icy-Stream.md#freeownedwritereq) | `function` | Inherited from [`Stream`](https://auscaster.com/icey/docs/api-reference/icy-Stream.md#stream) |
| [`canQueueWrite`](https://auscaster.com/icey/docs/api-reference/icy-Stream.md#canqueuewrite) | `function` | Inherited from [`Stream`](https://auscaster.com/icey/docs/api-reference/icy-Stream.md#stream) |
| [`Handle`](https://auscaster.com/icey/docs/api-reference/icy-Stream.md#handle-1) | `typedef` | Inherited from [`Stream`](https://auscaster.com/icey/docs/api-reference/icy-Stream.md#stream) |
| [`Handle`](https://auscaster.com/icey/docs/api-reference/icy-uv-Handle.md#handle-7) | `function` | Inherited from [`Handle`](https://auscaster.com/icey/docs/api-reference/icy-uv-Handle.md#handle-6) |
| [`~Handle`](https://auscaster.com/icey/docs/api-reference/icy-uv-Handle.md#handle-8) | `function` | Inherited from [`Handle`](https://auscaster.com/icey/docs/api-reference/icy-uv-Handle.md#handle-6) |
| [`init`](https://auscaster.com/icey/docs/api-reference/icy-uv-Handle.md#init-8) | `function` | Inherited from [`Handle`](https://auscaster.com/icey/docs/api-reference/icy-uv-Handle.md#handle-6) |
| [`invoke`](https://auscaster.com/icey/docs/api-reference/icy-uv-Handle.md#invoke) | `function` | Inherited from [`Handle`](https://auscaster.com/icey/docs/api-reference/icy-uv-Handle.md#handle-6) |
| [`invokeOrThrow`](https://auscaster.com/icey/docs/api-reference/icy-uv-Handle.md#invokeorthrow) | `function` | Inherited from [`Handle`](https://auscaster.com/icey/docs/api-reference/icy-uv-Handle.md#handle-6) |
| [`close`](https://auscaster.com/icey/docs/api-reference/icy-uv-Handle.md#close-18) | `function` | Inherited from [`Handle`](https://auscaster.com/icey/docs/api-reference/icy-uv-Handle.md#handle-6) |
| [`ref`](https://auscaster.com/icey/docs/api-reference/icy-uv-Handle.md#ref) | `function` | Inherited from [`Handle`](https://auscaster.com/icey/docs/api-reference/icy-uv-Handle.md#handle-6) |
| [`unref`](https://auscaster.com/icey/docs/api-reference/icy-uv-Handle.md#unref) | `function` | Inherited from [`Handle`](https://auscaster.com/icey/docs/api-reference/icy-uv-Handle.md#handle-6) |
| [`initialized`](https://auscaster.com/icey/docs/api-reference/icy-uv-Handle.md#initialized-1) | `function` | Inherited from [`Handle`](https://auscaster.com/icey/docs/api-reference/icy-uv-Handle.md#handle-6) |
| [`active`](https://auscaster.com/icey/docs/api-reference/icy-uv-Handle.md#active-3) | `function` | Inherited from [`Handle`](https://auscaster.com/icey/docs/api-reference/icy-uv-Handle.md#handle-6) |
| [`closing`](https://auscaster.com/icey/docs/api-reference/icy-uv-Handle.md#closing-1) | `function` | Inherited from [`Handle`](https://auscaster.com/icey/docs/api-reference/icy-uv-Handle.md#handle-6) |
| [`closed`](https://auscaster.com/icey/docs/api-reference/icy-uv-Handle.md#closed-2) | `function` | Inherited from [`Handle`](https://auscaster.com/icey/docs/api-reference/icy-uv-Handle.md#handle-6) |
| [`error`](https://auscaster.com/icey/docs/api-reference/icy-uv-Handle.md#error-11) | `function` | Inherited from [`Handle`](https://auscaster.com/icey/docs/api-reference/icy-uv-Handle.md#handle-6) |
| [`setError`](https://auscaster.com/icey/docs/api-reference/icy-uv-Handle.md#seterror-1) | `function` | Inherited from [`Handle`](https://auscaster.com/icey/docs/api-reference/icy-uv-Handle.md#handle-6) |
| [`setUVError`](https://auscaster.com/icey/docs/api-reference/icy-uv-Handle.md#setuverror) | `function` | Inherited from [`Handle`](https://auscaster.com/icey/docs/api-reference/icy-uv-Handle.md#handle-6) |
| [`setAndThrowError`](https://auscaster.com/icey/docs/api-reference/icy-uv-Handle.md#setandthrowerror) | `function` | Inherited from [`Handle`](https://auscaster.com/icey/docs/api-reference/icy-uv-Handle.md#handle-6) |
| [`throwLastError`](https://auscaster.com/icey/docs/api-reference/icy-uv-Handle.md#throwlasterror) | `function` | Inherited from [`Handle`](https://auscaster.com/icey/docs/api-reference/icy-uv-Handle.md#handle-6) |
| [`loop`](https://auscaster.com/icey/docs/api-reference/icy-uv-Handle.md#loop-3) | `function` | Inherited from [`Handle`](https://auscaster.com/icey/docs/api-reference/icy-uv-Handle.md#handle-6) |
| [`reset`](https://auscaster.com/icey/docs/api-reference/icy-uv-Handle.md#reset-12) | `function` | Inherited from [`Handle`](https://auscaster.com/icey/docs/api-reference/icy-uv-Handle.md#handle-6) |
| [`get`](https://auscaster.com/icey/docs/api-reference/icy-uv-Handle.md#get-15) | `function` | Inherited from [`Handle`](https://auscaster.com/icey/docs/api-reference/icy-uv-Handle.md#handle-6) |
| [`tid`](https://auscaster.com/icey/docs/api-reference/icy-uv-Handle.md#tid-2) | `function` | Inherited from [`Handle`](https://auscaster.com/icey/docs/api-reference/icy-uv-Handle.md#handle-6) |
| [`context`](https://auscaster.com/icey/docs/api-reference/icy-uv-Handle.md#context-5) | `function` | Inherited from [`Handle`](https://auscaster.com/icey/docs/api-reference/icy-uv-Handle.md#handle-6) |
| [`rawPtr`](https://auscaster.com/icey/docs/api-reference/icy-uv-Handle.md#rawptr) | `function` | Inherited from [`Handle`](https://auscaster.com/icey/docs/api-reference/icy-uv-Handle.md#handle-6) |
| [`setCloseCleanup`](https://auscaster.com/icey/docs/api-reference/icy-uv-Handle.md#setclosecleanup) | `function` | Inherited from [`Handle`](https://auscaster.com/icey/docs/api-reference/icy-uv-Handle.md#handle-6) |
| [`clearCloseCleanup`](https://auscaster.com/icey/docs/api-reference/icy-uv-Handle.md#clearclosecleanup) | `function` | Inherited from [`Handle`](https://auscaster.com/icey/docs/api-reference/icy-uv-Handle.md#handle-6) |
| [`assertThread`](https://auscaster.com/icey/docs/api-reference/icy-uv-Handle.md#assertthread) | `function` | Inherited from [`Handle`](https://auscaster.com/icey/docs/api-reference/icy-uv-Handle.md#handle-6) |
| [`_loop`](https://auscaster.com/icey/docs/api-reference/icy-uv-Handle.md#_loop) | `variable` | Inherited from [`Handle`](https://auscaster.com/icey/docs/api-reference/icy-uv-Handle.md#handle-6) |
| [`_context`](https://auscaster.com/icey/docs/api-reference/icy-uv-Handle.md#_context-1) | `variable` | Inherited from [`Handle`](https://auscaster.com/icey/docs/api-reference/icy-uv-Handle.md#handle-6) |
| [`_tid`](https://auscaster.com/icey/docs/api-reference/icy-uv-Handle.md#_tid) | `variable` | Inherited from [`Handle`](https://auscaster.com/icey/docs/api-reference/icy-uv-Handle.md#handle-6) |
| [`_error`](https://auscaster.com/icey/docs/api-reference/icy-uv-Handle.md#_error-3) | `variable` | Inherited from [`Handle`](https://auscaster.com/icey/docs/api-reference/icy-uv-Handle.md#handle-6) |
| [`onError`](https://auscaster.com/icey/docs/api-reference/icy-uv-Handle.md#onerror) | `function` | Inherited from [`Handle`](https://auscaster.com/icey/docs/api-reference/icy-uv-Handle.md#handle-6) |
| [`onClose`](https://auscaster.com/icey/docs/api-reference/icy-uv-Handle.md#onclose) | `function` | Inherited from [`Handle`](https://auscaster.com/icey/docs/api-reference/icy-uv-Handle.md#handle-6) |
| [`Handle`](https://auscaster.com/icey/docs/api-reference/icy-uv-Handle.md#handle-9) | `function` | Inherited from [`Handle`](https://auscaster.com/icey/docs/api-reference/icy-uv-Handle.md#handle-6) |
| [`operator=`](https://auscaster.com/icey/docs/api-reference/icy-uv-Handle.md#operator-171) | `function` | Inherited from [`Handle`](https://auscaster.com/icey/docs/api-reference/icy-uv-Handle.md#handle-6) |
| [`Handle`](https://auscaster.com/icey/docs/api-reference/icy-uv-Handle.md#handle-10) | `function` | Inherited from [`Handle`](https://auscaster.com/icey/docs/api-reference/icy-uv-Handle.md#handle-6) |
| [`operator=`](https://auscaster.com/icey/docs/api-reference/icy-uv-Handle.md#operator-172) | `function` | Inherited from [`Handle`](https://auscaster.com/icey/docs/api-reference/icy-uv-Handle.md#handle-6) |
| [`Type`](https://auscaster.com/icey/docs/api-reference/icy-uv-Handle.md#type-10) | `typedef` | Inherited from [`Handle`](https://auscaster.com/icey/docs/api-reference/icy-uv-Handle.md#handle-6) |
| [`opaque`](https://auscaster.com/icey/docs/api-reference/icy-net-Socket.md#opaque-2) | `variable` | Inherited from [`Socket`](https://auscaster.com/icey/docs/api-reference/icy-net-Socket.md#socket-1) |
| [`Socket`](https://auscaster.com/icey/docs/api-reference/icy-net-Socket.md#socket-2) | `function` | Inherited from [`Socket`](https://auscaster.com/icey/docs/api-reference/icy-net-Socket.md#socket-1) |
| [`~Socket`](https://auscaster.com/icey/docs/api-reference/icy-net-Socket.md#socket-3) | `function` | Inherited from [`Socket`](https://auscaster.com/icey/docs/api-reference/icy-net-Socket.md#socket-1) |
| [`Socket`](https://auscaster.com/icey/docs/api-reference/icy-net-Socket.md#socket-4) | `function` | Inherited from [`Socket`](https://auscaster.com/icey/docs/api-reference/icy-net-Socket.md#socket-1) |
| [`operator=`](https://auscaster.com/icey/docs/api-reference/icy-net-Socket.md#operator-178) | `function` | Inherited from [`Socket`](https://auscaster.com/icey/docs/api-reference/icy-net-Socket.md#socket-1) |
| [`Socket`](https://auscaster.com/icey/docs/api-reference/icy-net-Socket.md#socket-5) | `function` | Inherited from [`Socket`](https://auscaster.com/icey/docs/api-reference/icy-net-Socket.md#socket-1) |
| [`operator=`](https://auscaster.com/icey/docs/api-reference/icy-net-Socket.md#operator-179) | `function` | Inherited from [`Socket`](https://auscaster.com/icey/docs/api-reference/icy-net-Socket.md#socket-1) |
| [`connect`](https://auscaster.com/icey/docs/api-reference/icy-net-Socket.md#connect-2) | `function` | Inherited from [`Socket`](https://auscaster.com/icey/docs/api-reference/icy-net-Socket.md#socket-1) |
| [`connect`](https://auscaster.com/icey/docs/api-reference/icy-net-Socket.md#connect-3) | `function` | Inherited from [`Socket`](https://auscaster.com/icey/docs/api-reference/icy-net-Socket.md#socket-1) |
| [`bind`](https://auscaster.com/icey/docs/api-reference/icy-net-Socket.md#bind) | `function` | Inherited from [`Socket`](https://auscaster.com/icey/docs/api-reference/icy-net-Socket.md#socket-1) |
| [`listen`](https://auscaster.com/icey/docs/api-reference/icy-net-Socket.md#listen) | `function` | Inherited from [`Socket`](https://auscaster.com/icey/docs/api-reference/icy-net-Socket.md#socket-1) |
| [`shutdown`](https://auscaster.com/icey/docs/api-reference/icy-net-Socket.md#shutdown-3) | `function` | Inherited from [`Socket`](https://auscaster.com/icey/docs/api-reference/icy-net-Socket.md#socket-1) |
| [`sendOwned`](https://auscaster.com/icey/docs/api-reference/icy-net-Socket.md#sendowned) | `function` | Inherited from [`Socket`](https://auscaster.com/icey/docs/api-reference/icy-net-Socket.md#socket-1) |
| [`sendOwned`](https://auscaster.com/icey/docs/api-reference/icy-net-Socket.md#sendowned-1) | `function` | Inherited from [`Socket`](https://auscaster.com/icey/docs/api-reference/icy-net-Socket.md#socket-1) |
| [`close`](https://auscaster.com/icey/docs/api-reference/icy-net-Socket.md#close-19) | `function` | Inherited from [`Socket`](https://auscaster.com/icey/docs/api-reference/icy-net-Socket.md#socket-1) |
| [`address`](https://auscaster.com/icey/docs/api-reference/icy-net-Socket.md#address-8) | `function` | Inherited from [`Socket`](https://auscaster.com/icey/docs/api-reference/icy-net-Socket.md#socket-1) |
| [`peerAddress`](https://auscaster.com/icey/docs/api-reference/icy-net-Socket.md#peeraddress-1) | `function` | Inherited from [`Socket`](https://auscaster.com/icey/docs/api-reference/icy-net-Socket.md#socket-1) |
| [`transport`](https://auscaster.com/icey/docs/api-reference/icy-net-Socket.md#transport) | `function` | Inherited from [`Socket`](https://auscaster.com/icey/docs/api-reference/icy-net-Socket.md#socket-1) |
| [`setError`](https://auscaster.com/icey/docs/api-reference/icy-net-Socket.md#seterror-2) | `function` | Inherited from [`Socket`](https://auscaster.com/icey/docs/api-reference/icy-net-Socket.md#socket-1) |
| [`error`](https://auscaster.com/icey/docs/api-reference/icy-net-Socket.md#error-12) | `function` | Inherited from [`Socket`](https://auscaster.com/icey/docs/api-reference/icy-net-Socket.md#socket-1) |
| [`closed`](https://auscaster.com/icey/docs/api-reference/icy-net-Socket.md#closed-3) | `function` | Inherited from [`Socket`](https://auscaster.com/icey/docs/api-reference/icy-net-Socket.md#socket-1) |
| [`loop`](https://auscaster.com/icey/docs/api-reference/icy-net-Socket.md#loop-4) | `function` | Inherited from [`Socket`](https://auscaster.com/icey/docs/api-reference/icy-net-Socket.md#socket-1) |
| [`_af`](https://auscaster.com/icey/docs/api-reference/icy-net-Socket.md#_af) | `variable` | Inherited from [`Socket`](https://auscaster.com/icey/docs/api-reference/icy-net-Socket.md#socket-1) |
| [`init`](https://auscaster.com/icey/docs/api-reference/icy-net-Socket.md#init-10) | `function` | Inherited from [`Socket`](https://auscaster.com/icey/docs/api-reference/icy-net-Socket.md#socket-1) |
| [`reset`](https://auscaster.com/icey/docs/api-reference/icy-net-Socket.md#reset-13) | `function` | Inherited from [`Socket`](https://auscaster.com/icey/docs/api-reference/icy-net-Socket.md#socket-1) |
| [`Ptr`](https://auscaster.com/icey/docs/api-reference/icy-net-Socket.md#ptr-9) | `typedef` | Inherited from [`Socket`](https://auscaster.com/icey/docs/api-reference/icy-net-Socket.md#socket-1) |
| [`Vec`](https://auscaster.com/icey/docs/api-reference/icy-net-Socket.md#vec) | `typedef` | Inherited from [`Socket`](https://auscaster.com/icey/docs/api-reference/icy-net-Socket.md#socket-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 [`TCPSocket`](https://auscaster.com/icey/docs/api-reference/icy-net-TCPSocket.md#tcpsocket)

| Kind | Name | Description |
|------|------|-------------|
| `variable` | [`AcceptConnection`](https://auscaster.com/icey/docs/api-reference/icy-net-TCPSocket.md#acceptconnection-1)  | Fired when a new client connection is accepted; carries a shared_ptr to the new socket. |
| `function` | [`TCPSocket`](https://auscaster.com/icey/docs/api-reference/icy-net-TCPSocket.md#tcpsocket-1)  | Constructs the [TCPSocket](https://auscaster.com/icey/docs/api-reference/icy-net-TCPSocket.md#tcpsocket) and initializes the underlying libuv handle. |
| `function` | [`~TCPSocket`](https://auscaster.com/icey/docs/api-reference/icy-net-TCPSocket.md#tcpsocket-2) `virtual` `noexcept` |  |
| `function` | [`TCPSocket`](https://auscaster.com/icey/docs/api-reference/icy-net-TCPSocket.md#tcpsocket-3)  | Deleted constructor. |
| `function` | [`operator=`](https://auscaster.com/icey/docs/api-reference/icy-net-TCPSocket.md#operator-189)  | Deleted assignment operator. |
| `function` | [`TCPSocket`](https://auscaster.com/icey/docs/api-reference/icy-net-TCPSocket.md#tcpsocket-4)  | Deleted constructor. |
| `function` | [`operator=`](https://auscaster.com/icey/docs/api-reference/icy-net-TCPSocket.md#operator-190)  | Deleted assignment operator. |
| `function` | [`shutdown`](https://auscaster.com/icey/docs/api-reference/icy-net-TCPSocket.md#shutdown-7) `virtual` `override` | Sends a TCP shutdown request; the socket closes after the peer acknowledges. |
| `function` | [`close`](https://auscaster.com/icey/docs/api-reference/icy-net-TCPSocket.md#close-22) `virtual` `override` | Closes the socket immediately, releasing all associated resources. |
| `function` | [`connect`](https://auscaster.com/icey/docs/api-reference/icy-net-TCPSocket.md#connect-7) `virtual` `override` | Connects to `peerAddress` using a libuv connect request. On success, calls [onConnect()](https://auscaster.com/icey/docs/api-reference/icy-net-TCPSocket.md#onconnect-1); on failure, calls [setUVError()](https://auscaster.com/icey/docs/api-reference/icy-uv-Handle.md#setuverror). |
| `function` | [`connect`](https://auscaster.com/icey/docs/api-reference/icy-net-TCPSocket.md#connect-8) `virtual` `override` | Resolves `host` via DNS (or maps "localhost"), then connects. |
| `function` | [`send`](https://auscaster.com/icey/docs/api-reference/icy-net-TCPSocket.md#send-5) `virtual` `override` | Writes `len` bytes to the connected peer. |
| `function` | [`sendOwned`](https://auscaster.com/icey/docs/api-reference/icy-net-TCPSocket.md#sendowned-6) `virtual` `override` | Sends an owned payload buffer to the connected peer. |
| `function` | [`send`](https://auscaster.com/icey/docs/api-reference/icy-net-TCPSocket.md#send-6) `virtual` `override` | Writes `len` bytes; `peerAddress` is ignored for TCP (connected stream). |
| `function` | [`sendOwned`](https://auscaster.com/icey/docs/api-reference/icy-net-TCPSocket.md#sendowned-7) `virtual` `override` |  |
| `function` | [`bind`](https://auscaster.com/icey/docs/api-reference/icy-net-TCPSocket.md#bind-2) `virtual` `override` | Binds the socket to `address`. Resets and reinitializes the handle if the address family changes. |
| `function` | [`listen`](https://auscaster.com/icey/docs/api-reference/icy-net-TCPSocket.md#listen-2) `virtual` `override` | Starts listening for incoming connections with the given backlog. |
| `function` | [`acceptConnection`](https://auscaster.com/icey/docs/api-reference/icy-net-TCPSocket.md#acceptconnection-2) `virtual` | Accepts the next pending client connection and fires AcceptConnection. |
| `function` | [`setReusePort`](https://auscaster.com/icey/docs/api-reference/icy-net-TCPSocket.md#setreuseport)  | Enables SO_REUSEPORT on Linux kernel >= 3.9 for multi-thread load balancing. Must be called after [bind()](https://auscaster.com/icey/docs/api-reference/icy-net-TCPSocket.md#bind-2). No-op and returns false on unsupported platforms. |
| `function` | [`setNoDelay`](https://auscaster.com/icey/docs/api-reference/icy-net-TCPSocket.md#setnodelay)  | Enables or disables TCP_NODELAY (Nagle's algorithm). |
| `function` | [`setKeepAlive`](https://auscaster.com/icey/docs/api-reference/icy-net-TCPSocket.md#setkeepalive)  | Enables or disables TCP keep-alive probes. |
| `function` | [`setSimultaneousAccepts`](https://auscaster.com/icey/docs/api-reference/icy-net-TCPSocket.md#setsimultaneousaccepts)  | Enables or disables simultaneous accepts on Windows. No-op and returns false on non-Windows platforms. |
| `function` | [`setMode`](https://auscaster.com/icey/docs/api-reference/icy-net-TCPSocket.md#setmode)  | Sets the socket mode (ServerSide or ClientSide). |
| `function` | [`mode`](https://auscaster.com/icey/docs/api-reference/icy-net-TCPSocket.md#mode) `const` | Returns the current socket mode. |
| `function` | [`setError`](https://auscaster.com/icey/docs/api-reference/icy-net-TCPSocket.md#seterror-3) `virtual` `override` | Sets the socket error; ignores the call if an error is already recorded. Setting an error causes the socket to close. |
| `function` | [`error`](https://auscaster.com/icey/docs/api-reference/icy-net-TCPSocket.md#error-14) `virtual` `const` `override` | Returns the current socket error, if any. |
| `function` | [`closed`](https://auscaster.com/icey/docs/api-reference/icy-net-TCPSocket.md#closed-4) `virtual` `const` `override` | Returns true if the native socket handle is closed. |
| `function` | [`address`](https://auscaster.com/icey/docs/api-reference/icy-net-TCPSocket.md#address-9) `virtual` `const` `override` | Returns the IP address and port number of the socket. A wildcard address is returned if the socket is not connected. |
| `function` | [`peerAddress`](https://auscaster.com/icey/docs/api-reference/icy-net-TCPSocket.md#peeraddress-2) `virtual` `const` `override` | Returns the IP address and port number of the peer socket. A wildcard address is returned if the socket is not connected. |
| `function` | [`transport`](https://auscaster.com/icey/docs/api-reference/icy-net-TCPSocket.md#transport-2) `virtual` `const` `override` | Returns the TCP transport protocol. |
| `function` | [`loop`](https://auscaster.com/icey/docs/api-reference/icy-net-TCPSocket.md#loop-5) `virtual` `const` `override` | Returns the event loop associated with this socket. |
| `function` | [`onConnect`](https://auscaster.com/icey/docs/api-reference/icy-net-TCPSocket.md#onconnect-1) `virtual` | Called by the stream layer when the TCP connection is established. |
| `function` | [`onRead`](https://auscaster.com/icey/docs/api-reference/icy-net-TCPSocket.md#onread-2) `virtual` `override` | Called by the stream layer with raw received bytes; wraps them in a [MutableBuffer](https://auscaster.com/icey/docs/api-reference/icy-MutableBuffer.md#mutablebuffer-6). |
| `function` | [`onRecv`](https://auscaster.com/icey/docs/api-reference/icy-net-TCPSocket.md#onrecv) `virtual` | Dispatches a received buffer to all socket adapters via onSocketRecv. |
| `function` | [`onError`](https://auscaster.com/icey/docs/api-reference/icy-net-TCPSocket.md#onerror-1) `virtual` `override` | Dispatches the error to adapters and closes the socket. |
| `function` | [`onClose`](https://auscaster.com/icey/docs/api-reference/icy-net-TCPSocket.md#onclose-1) `virtual` `override` | Dispatches the close event to all socket adapters. |
| `variable` | [`_mode`](https://auscaster.com/icey/docs/api-reference/icy-net-TCPSocket.md#_mode-1)  |  |
| `variable` | [`_peerAddress`](https://auscaster.com/icey/docs/api-reference/icy-net-TCPSocket.md#_peeraddress)  | Cached peer address (avoids syscall per recv) |
| `variable` | [`_peerAddressCached`](https://auscaster.com/icey/docs/api-reference/icy-net-TCPSocket.md#_peeraddresscached)  | True once _peerAddress is set at connect/accept. |
| `function` | [`init`](https://auscaster.com/icey/docs/api-reference/icy-net-TCPSocket.md#init-11) `virtual` `override` | Initializes the underlying socket context. |
| `function` | [`reset`](https://auscaster.com/icey/docs/api-reference/icy-net-TCPSocket.md#reset-14) `virtual` `override` | Resets the socket context for reuse. |
| `typedef` | [`Ptr`](https://auscaster.com/icey/docs/api-reference/icy-net-TCPSocket.md#ptr-14)  |  |
| `typedef` | [`Vec`](https://auscaster.com/icey/docs/api-reference/icy-net-TCPSocket.md#vec-2)  |  |

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

| Kind | Name | Description |
|------|------|-------------|
| `variable` | [`Read`](https://auscaster.com/icey/docs/api-reference/icy-Stream.md#read-3)  | Emitted when data has been received from the peer. |
| `function` | [`Stream`](https://auscaster.com/icey/docs/api-reference/icy-Stream.md#stream-1) `inline` | Construct the stream bound to `loop` with a 64 KiB read buffer. |
| `function` | [`~Stream`](https://auscaster.com/icey/docs/api-reference/icy-Stream.md#stream-2) `virtual` `inline` | Destroy the stream, stopping reads and freeing pooled write requests. |
| `function` | [`close`](https://auscaster.com/icey/docs/api-reference/icy-Stream.md#close-5) `virtual` `inline` `override` | Closes and resets the stream handle. This will close the active socket/pipe and destroy the handle. |
| `function` | [`shutdown`](https://auscaster.com/icey/docs/api-reference/icy-Stream.md#shutdown) `inline` | Send a TCP/pipe shutdown request to the connected peer. |
| `function` | [`write`](https://auscaster.com/icey/docs/api-reference/icy-Stream.md#write-16) `inline` | Write `len` bytes from `data` to the stream. |
| `function` | [`writeOwned`](https://auscaster.com/icey/docs/api-reference/icy-Stream.md#writeowned) `inline` | Write an owned payload buffer to the stream. |
| `function` | [`setHighWaterMark`](https://auscaster.com/icey/docs/api-reference/icy-Stream.md#sethighwatermark) `inline` | Set the high water mark for the write queue (default 16MB). When the write queue exceeds this size, [write()](https://auscaster.com/icey/docs/api-reference/icy-Stream.md#write-16) returns false. |
| `function` | [`write`](https://auscaster.com/icey/docs/api-reference/icy-Stream.md#write-17) `inline` | Write `len` bytes from `data` together with a stream handle over an IPC pipe (uses `uv_write2`). |
| `function` | [`stream`](https://auscaster.com/icey/docs/api-reference/icy-Stream.md#stream-3) `inline` | Return the underlying `uv_stream_t` pointer cast from the native handle. |
| `variable` | [`_buffer`](https://auscaster.com/icey/docs/api-reference/icy-Stream.md#_buffer-1)  |  |
| `variable` | [`_started`](https://auscaster.com/icey/docs/api-reference/icy-Stream.md#_started-1)  |  |
| `variable` | [`_highWaterMark`](https://auscaster.com/icey/docs/api-reference/icy-Stream.md#_highwatermark)  | 16MB default write queue limit |
| `variable` | [`_writeReqFree`](https://auscaster.com/icey/docs/api-reference/icy-Stream.md#_writereqfree)  | Freelist for write requests. |
| `variable` | [`_ownedWriteReqFree`](https://auscaster.com/icey/docs/api-reference/icy-Stream.md#_ownedwritereqfree)  | Freelist for owned write requests. |
| `function` | [`readStart`](https://auscaster.com/icey/docs/api-reference/icy-Stream.md#readstart-1) `virtual` `inline` | Begin reading from the stream by registering libuv read callbacks. |
| `function` | [`readStop`](https://auscaster.com/icey/docs/api-reference/icy-Stream.md#readstop) `virtual` `inline` | Stop reading from the stream. |
| `function` | [`onRead`](https://auscaster.com/icey/docs/api-reference/icy-Stream.md#onread) `virtual` `inline` | Called by `handleRead` when `len` bytes of `data` arrive. |
| `function` | [`allocWriteReq`](https://auscaster.com/icey/docs/api-reference/icy-Stream.md#allocwritereq) `inline` | Return a `uv_write_t` from the freelist, or allocate a new one if the pool is empty. |
| `function` | [`freeWriteReq`](https://auscaster.com/icey/docs/api-reference/icy-Stream.md#freewritereq) `inline` | Return `req` to the freelist, or delete it if the pool is at capacity. |
| `function` | [`allocOwnedWriteReq`](https://auscaster.com/icey/docs/api-reference/icy-Stream.md#allocownedwritereq) `inline` |  |
| `function` | [`freeOwnedWriteReq`](https://auscaster.com/icey/docs/api-reference/icy-Stream.md#freeownedwritereq) `inline` |  |
| `function` | [`canQueueWrite`](https://auscaster.com/icey/docs/api-reference/icy-Stream.md#canqueuewrite) `inline` |  |
| `typedef` | [`Handle`](https://auscaster.com/icey/docs/api-reference/icy-Stream.md#handle-1)  |  |

## Inherited from [`Handle`](https://auscaster.com/icey/docs/api-reference/icy-uv-Handle.md#handle-6)

| Kind | Name | Description |
|------|------|-------------|
| `function` | [`Handle`](https://auscaster.com/icey/docs/api-reference/icy-uv-Handle.md#handle-7) `inline` | Construct the handle bound to the given event loop. |
| `function` | [`~Handle`](https://auscaster.com/icey/docs/api-reference/icy-uv-Handle.md#handle-8) `virtual` `inline` |  |
| `function` | [`init`](https://auscaster.com/icey/docs/api-reference/icy-uv-Handle.md#init-8) `inline` | Initialize the underlying libuv handle by calling `f` with the loop, the raw handle pointer, and any additional `args`. |
| `function` | [`invoke`](https://auscaster.com/icey/docs/api-reference/icy-uv-Handle.md#invoke) `inline` | Invoke a libuv function `f` with `args` on the initialized handle. |
| `function` | [`invokeOrThrow`](https://auscaster.com/icey/docs/api-reference/icy-uv-Handle.md#invokeorthrow) `inline` | Invoke a libuv function `f` with `args`, throwing on failure. |
| `function` | [`close`](https://auscaster.com/icey/docs/api-reference/icy-uv-Handle.md#close-18) `virtual` `inline` | Close and destroy the handle. |
| `function` | [`ref`](https://auscaster.com/icey/docs/api-reference/icy-uv-Handle.md#ref) `inline` | Re-reference the handle with the event loop after a previous [`unref()`](https://auscaster.com/icey/docs/api-reference/icy-uv-Handle.md#unref). |
| `function` | [`unref`](https://auscaster.com/icey/docs/api-reference/icy-uv-Handle.md#unref) `inline` | Unreference the handle from the event loop. |
| `function` | [`initialized`](https://auscaster.com/icey/docs/api-reference/icy-uv-Handle.md#initialized-1) `const` `inline` | Return `true` if the handle has been successfully initialized via [`init()`](https://auscaster.com/icey/docs/api-reference/icy-uv-Handle.md#init-8). |
| `function` | [`active`](https://auscaster.com/icey/docs/api-reference/icy-uv-Handle.md#active-3) `virtual` `const` `inline` | Return `true` when the handle is active (libuv `uv_is_active`). |
| `function` | [`closing`](https://auscaster.com/icey/docs/api-reference/icy-uv-Handle.md#closing-1) `virtual` `const` `inline` | Return `true` if `uv_close` has been called and the handle is awaiting its close callback (libuv `uv_is_closing`). |
| `function` | [`closed`](https://auscaster.com/icey/docs/api-reference/icy-uv-Handle.md#closed-2) `virtual` `const` `inline` | Return `true` if the handle has been fully closed (context released). |
| `function` | [`error`](https://auscaster.com/icey/docs/api-reference/icy-uv-Handle.md#error-11) `const` `inline` | Return the last error set on this handle, or a default-constructed [`Error`](https://auscaster.com/icey/docs/api-reference/icy-Error.md#error) if no error has occurred. |
| `function` | [`setError`](https://auscaster.com/icey/docs/api-reference/icy-uv-Handle.md#seterror-1) `virtual` `inline` | Set the error state and invoke [`onError()`](https://auscaster.com/icey/docs/api-reference/icy-uv-Handle.md#onerror). |
| `function` | [`setUVError`](https://auscaster.com/icey/docs/api-reference/icy-uv-Handle.md#setuverror) `inline` | Translate a libuv error code into an [`Error`](https://auscaster.com/icey/docs/api-reference/icy-Error.md#error) and call [`setError()`](https://auscaster.com/icey/docs/api-reference/icy-uv-Handle.md#seterror-1). |
| `function` | [`setAndThrowError`](https://auscaster.com/icey/docs/api-reference/icy-uv-Handle.md#setandthrowerror) `inline` | Set the error state from a libuv error code and throw a `std::runtime_error`. |
| `function` | [`throwLastError`](https://auscaster.com/icey/docs/api-reference/icy-uv-Handle.md#throwlasterror) `inline` | Throw a `std::runtime_error` if the handle currently holds an error. |
| `function` | [`loop`](https://auscaster.com/icey/docs/api-reference/icy-uv-Handle.md#loop-3) `const` `inline` | Return the event loop this handle is bound to. |
| `function` | [`reset`](https://auscaster.com/icey/docs/api-reference/icy-uv-Handle.md#reset-12) `inline` | Close the current handle (if open) and allocate a fresh [`Context`](https://auscaster.com/icey/docs/api-reference/icy-uv-Context.md#context-2), leaving the handle ready to be re-initialized via [`init()`](https://auscaster.com/icey/docs/api-reference/icy-uv-Handle.md#init-8). |
| `function` | [`get`](https://auscaster.com/icey/docs/api-reference/icy-uv-Handle.md#get-15) `const` `inline` | Return the raw libuv handle pointer cast to [`Handle`](https://auscaster.com/icey/docs/api-reference/icy-uv-Handle.md#handle-6). |
| `function` | [`tid`](https://auscaster.com/icey/docs/api-reference/icy-uv-Handle.md#tid-2) `const` `inline` | Return the ID of the thread that constructed this handle. |
| `function` | [`context`](https://auscaster.com/icey/docs/api-reference/icy-uv-Handle.md#context-5) `const` `inline` | Return the raw [`Context`](https://auscaster.com/icey/docs/api-reference/icy-uv-Context.md#context-2) that owns the libuv handle memory. |
| `function` | [`rawPtr`](https://auscaster.com/icey/docs/api-reference/icy-uv-Handle.md#rawptr) `const` `inline` | Return the raw libuv handle pointer without retaining the [`Context`](https://auscaster.com/icey/docs/api-reference/icy-uv-Context.md#context-2). |
| `function` | [`setCloseCleanup`](https://auscaster.com/icey/docs/api-reference/icy-uv-Handle.md#setclosecleanup) `inline` |  |
| `function` | [`clearCloseCleanup`](https://auscaster.com/icey/docs/api-reference/icy-uv-Handle.md#clearclosecleanup) `inline` |  |
| `function` | [`assertThread`](https://auscaster.com/icey/docs/api-reference/icy-uv-Handle.md#assertthread) `const` `inline` | Throw `std::logic_error` if called from any thread other than the thread that constructed this handle. |
| `variable` | [`_loop`](https://auscaster.com/icey/docs/api-reference/icy-uv-Handle.md#_loop)  |  |
| `variable` | [`_context`](https://auscaster.com/icey/docs/api-reference/icy-uv-Handle.md#_context-1)  |  |
| `variable` | [`_tid`](https://auscaster.com/icey/docs/api-reference/icy-uv-Handle.md#_tid)  |  |
| `variable` | [`_error`](https://auscaster.com/icey/docs/api-reference/icy-uv-Handle.md#_error-3)  |  |
| `function` | [`onError`](https://auscaster.com/icey/docs/api-reference/icy-uv-Handle.md#onerror) `virtual` `inline` | Called by [`setError()`](https://auscaster.com/icey/docs/api-reference/icy-uv-Handle.md#seterror-1) after the error state has been updated. |
| `function` | [`onClose`](https://auscaster.com/icey/docs/api-reference/icy-uv-Handle.md#onclose) `virtual` `inline` | Called by [`close()`](https://auscaster.com/icey/docs/api-reference/icy-uv-Handle.md#close-18) after the context has been released. |
| `function` | [`Handle`](https://auscaster.com/icey/docs/api-reference/icy-uv-Handle.md#handle-9)  | NonCopyable and NonMovable. |
| `function` | [`operator=`](https://auscaster.com/icey/docs/api-reference/icy-uv-Handle.md#operator-171)  | Deleted assignment operator. |
| `function` | [`Handle`](https://auscaster.com/icey/docs/api-reference/icy-uv-Handle.md#handle-10)  | Deleted constructor. |
| `function` | [`operator=`](https://auscaster.com/icey/docs/api-reference/icy-uv-Handle.md#operator-172)  | Deleted assignment operator. |
| `typedef` | [`Type`](https://auscaster.com/icey/docs/api-reference/icy-uv-Handle.md#type-10)  | Define the native handle type. |

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

| Kind | Name | Description |
|------|------|-------------|
| `variable` | [`opaque`](https://auscaster.com/icey/docs/api-reference/icy-net-Socket.md#opaque-2)  | Optional client data. |
| `function` | [`Socket`](https://auscaster.com/icey/docs/api-reference/icy-net-Socket.md#socket-2)  | Defaulted constructor. |
| `function` | [`~Socket`](https://auscaster.com/icey/docs/api-reference/icy-net-Socket.md#socket-3) `virtual` `noexcept` | Defaulted destructor. |
| `function` | [`Socket`](https://auscaster.com/icey/docs/api-reference/icy-net-Socket.md#socket-4)  | Deleted constructor. |
| `function` | [`operator=`](https://auscaster.com/icey/docs/api-reference/icy-net-Socket.md#operator-178)  | Deleted assignment operator. |
| `function` | [`Socket`](https://auscaster.com/icey/docs/api-reference/icy-net-Socket.md#socket-5)  | Deleted constructor. |
| `function` | [`operator=`](https://auscaster.com/icey/docs/api-reference/icy-net-Socket.md#operator-179)  | Deleted assignment operator. |
| `function` | [`connect`](https://auscaster.com/icey/docs/api-reference/icy-net-Socket.md#connect-2) `virtual` | Connects to the given peer IP address. |
| `function` | [`connect`](https://auscaster.com/icey/docs/api-reference/icy-net-Socket.md#connect-3) `virtual` | Resolves and connects to the given host address. |
| `function` | [`bind`](https://auscaster.com/icey/docs/api-reference/icy-net-Socket.md#bind) `virtual` | Bind a local address to the socket. The address may be IPv4 or IPv6 (if supported). |
| `function` | [`listen`](https://auscaster.com/icey/docs/api-reference/icy-net-Socket.md#listen) `virtual` `inline` | Listens the socket on the given address. |
| `function` | [`shutdown`](https://auscaster.com/icey/docs/api-reference/icy-net-Socket.md#shutdown-3) `virtual` `inline` | Sends the shutdown packet which should result is socket closure via callback. |
| `function` | [`sendOwned`](https://auscaster.com/icey/docs/api-reference/icy-net-Socket.md#sendowned) `virtual` | Sends an owned payload buffer to the connected peer. |
| `function` | [`sendOwned`](https://auscaster.com/icey/docs/api-reference/icy-net-Socket.md#sendowned-1) `virtual` |  |
| `function` | [`close`](https://auscaster.com/icey/docs/api-reference/icy-net-Socket.md#close-19) `virtual` | Closes the underlying socket. |
| `function` | [`address`](https://auscaster.com/icey/docs/api-reference/icy-net-Socket.md#address-8) `virtual` `const` | The locally bound address. |
| `function` | [`peerAddress`](https://auscaster.com/icey/docs/api-reference/icy-net-Socket.md#peeraddress-1) `virtual` `const` | The connected peer address. |
| `function` | [`transport`](https://auscaster.com/icey/docs/api-reference/icy-net-Socket.md#transport) `virtual` `const` | The transport protocol: TCP, UDP or SSLTCP. |
| `function` | [`setError`](https://auscaster.com/icey/docs/api-reference/icy-net-Socket.md#seterror-2) `virtual` | Sets the socket error. |
| `function` | [`error`](https://auscaster.com/icey/docs/api-reference/icy-net-Socket.md#error-12) `virtual` `const` | Return the socket error if any. |
| `function` | [`closed`](https://auscaster.com/icey/docs/api-reference/icy-net-Socket.md#closed-3) `virtual` `const` | Returns true if the native socket handle is closed. |
| `function` | [`loop`](https://auscaster.com/icey/docs/api-reference/icy-net-Socket.md#loop-4) `virtual` `const` | Returns the socket event loop. |
| `variable` | [`_af`](https://auscaster.com/icey/docs/api-reference/icy-net-Socket.md#_af)  |  |
| `function` | [`init`](https://auscaster.com/icey/docs/api-reference/icy-net-Socket.md#init-10) `virtual` | Initializes the underlying socket context. |
| `function` | [`reset`](https://auscaster.com/icey/docs/api-reference/icy-net-Socket.md#reset-13) `virtual` | Resets the socket context for reuse. |
| `typedef` | [`Ptr`](https://auscaster.com/icey/docs/api-reference/icy-net-Socket.md#ptr-9)  |  |
| `typedef` | [`Vec`](https://auscaster.com/icey/docs/api-reference/icy-net-Socket.md#vec)  |  |

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

## Friends

| Name | Description |
|------|-------------|
| [`net::SSLAdapter`](#net-ssladapter)  |  |

---

<a id="net-ssladapter"></a>

### net::SSLAdapter

```cpp
friend class net::SSLAdapter
```

[Defined in src/net/include/icy/net/sslsocket.h:169](https://github.com/auscaster/icey/blob/main/src/net/include/icy/net/sslsocket.h#L169)

## Public Methods

| Return | Name | Description |
|--------|------|-------------|
|  | [`SSLSocket`](#sslsocket-1)  | Constructs an [SSLSocket](#sslsocket) that acquires its context from [SSLManager](https://auscaster.com/icey/docs/api-reference/icy-net-SSLManager.md#sslmanager) on first use. |
|  | [`SSLSocket`](#sslsocket-2)  | Constructs an [SSLSocket](#sslsocket) with an explicit SSL context. |
|  | [`SSLSocket`](#sslsocket-3)  | Constructs an [SSLSocket](#sslsocket) with an explicit context and a prior session for resumption. |
|  | [`~SSLSocket`](#sslsocket-4) `virtual` `noexcept` |  |
| `void` | [`connect`](#connect-5) `virtual` `override` | Initialize the [SSLSocket](#sslsocket) with the given [SSLContext](https://auscaster.com/icey/docs/api-reference/icy-net-SSLContext.md#sslcontext). |
| `void` | [`connect`](#connect-6) `virtual` `override` | Resolves `host` and initiates a secure connection. |
| `void` | [`bind`](#bind-1) `virtual` `override` | Binds the socket to `address` for server-side use. Throws std::logic_error if the context is not a server context. |
| `void` | [`listen`](#listen-1) `virtual` `override` | Starts listening for incoming connections. Throws std::logic_error if the context is not a server context. |
| `bool` | [`shutdown`](#shutdown-6) `virtual` `override` | Shuts down the connection by attempting an orderly SSL shutdown, then actually shutting down the TCP connection. |
| `void` | [`close`](#close-21) `virtual` `override` | Closes the socket forcefully. |
| `ssize_t` | [`send`](#send-3) `virtual` `override` | Encrypts and sends `len` bytes to the connected peer. |
| `ssize_t` | [`sendOwned`](#sendowned-4) `virtual` `override` | Sends an owned payload buffer to the connected peer. |
| `ssize_t` | [`send`](#send-4) `virtual` `override` | Encrypts and sends `len` bytes, ignoring `peerAddress` (TCP is connected). |
| `ssize_t` | [`sendOwned`](#sendowned-5) `virtual` `override` |  |
| `void` | [`setHostname`](#sethostname-1)  | Set the expected peer hostname for certificate verification and SNI. Must be called before [connect()](#connect-5) to enable hostname verification. |
| `void` | [`useContext`](#usecontext)  | Use the given SSL context for this socket. |
| [`SSLContext::Ptr`](https://auscaster.com/icey/docs/api-reference/icy-net-SSLContext.md#ptr-11) | [`context`](#context-6) `const` | Returns the SSL context used for this socket. |
| `void` | [`useSession`](#usesession)  | Sets the SSL session to use for the next connection. Setting a previously saved Session object is necessary to enable session caching. |
| [`SSLSession::Ptr`](https://auscaster.com/icey/docs/api-reference/icy-net-SSLSession.md#ptr-12) | [`currentSession`](#currentsession)  | Returns the SSL session of the current connection, for reuse in a future connection (if session caching is enabled). |
| `bool` | [`sessionWasReused`](#sessionwasreused)  | Returns true if a reused session was negotiated during the handshake. |
| `int` | [`available`](#available-4) `const` | Returns the number of bytes available from the SSL buffer for immediate reading. |
| `X509 *` | [`peerCertificate`](#peercertificate) `const` | Returns the peer's X.509 certificate, or nullptr if no certificate was presented. |
| [`net::TransportType`](https://auscaster.com/icey/docs/api-reference/icy-net.md#transporttype) | [`transport`](#transport-1) `virtual` `const` `override` | Returns the SSLTCP transport protocol identifier. |
| `void` | [`acceptConnection`](#acceptconnection) `virtual` `override` | Accepts a pending client connection, initializes the server-side SSL context on the new socket, and fires the AcceptConnection signal. |
| `void` | [`onConnect`](#onconnect) `virtual` `override` | Called when the TCP connection is established; starts reading and initiates the client-side SSL handshake. |
| `void` | [`onRead`](#onread-1) `virtual` `override` | Feeds raw encrypted bytes from the network into the SSL adapter. Called by the stream layer when ciphertext arrives from the peer. |

---

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

### SSLSocket

```cpp
SSLSocket(uv::Loop * loop = uv::defaultLoop())
```

[Defined in src/net/include/icy/net/sslsocket.h:38](https://github.com/auscaster/icey/blob/main/src/net/include/icy/net/sslsocket.h#L38)

Constructs an [SSLSocket](#sslsocket) that acquires its context from [SSLManager](https://auscaster.com/icey/docs/api-reference/icy-net-SSLManager.md#sslmanager) on first use.

#### Parameters

| Parameter | Type | Description |
|-----------|------|-------------|
| `loop` | [`uv::Loop`](https://auscaster.com/icey/docs/api-reference/uv.md#loop-1) * | Event loop to use; defaults to the default loop. |

---

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

### SSLSocket

```cpp
SSLSocket(SSLContext::Ptr sslContext, uv::Loop * loop = uv::defaultLoop())
```

[Defined in src/net/include/icy/net/sslsocket.h:43](https://github.com/auscaster/icey/blob/main/src/net/include/icy/net/sslsocket.h#L43)

Constructs an [SSLSocket](#sslsocket) with an explicit SSL context.

#### Parameters

| Parameter | Type | Description |
|-----------|------|-------------|
| `sslContext` | [`SSLContext::Ptr`](https://auscaster.com/icey/docs/api-reference/icy-net-SSLContext.md#ptr-11) | The SSL context to use for this connection. |
| `loop` | [`uv::Loop`](https://auscaster.com/icey/docs/api-reference/uv.md#loop-1) * | Event loop to use; defaults to the default loop. |

---

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

### SSLSocket

```cpp
SSLSocket(SSLContext::Ptr sslContext, SSLSession::Ptr session, uv::Loop * loop = uv::defaultLoop())
```

[Defined in src/net/include/icy/net/sslsocket.h:49](https://github.com/auscaster/icey/blob/main/src/net/include/icy/net/sslsocket.h#L49)

Constructs an [SSLSocket](#sslsocket) with an explicit context and a prior session for resumption.

#### Parameters

| Parameter | Type | Description |
|-----------|------|-------------|
| `sslContext` | [`SSLContext::Ptr`](https://auscaster.com/icey/docs/api-reference/icy-net-SSLContext.md#ptr-11) | The SSL context to use for this connection. |
| `session` | [`SSLSession::Ptr`](https://auscaster.com/icey/docs/api-reference/icy-net-SSLSession.md#ptr-12) | A previously saved session to attempt resumption with. |
| `loop` | [`uv::Loop`](https://auscaster.com/icey/docs/api-reference/uv.md#loop-1) * | Event loop to use; defaults to the default loop. |

---

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

### ~SSLSocket

`virtual` `noexcept`

```cpp
virtual ~SSLSocket() noexcept
```

[Defined in src/net/include/icy/net/sslsocket.h:52](https://github.com/auscaster/icey/blob/main/src/net/include/icy/net/sslsocket.h#L52)

---

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

### connect

`virtual` `override`

```cpp
virtual void connect(const Address & peerAddress) override
```

[Defined in src/net/include/icy/net/sslsocket.h:61](https://github.com/auscaster/icey/blob/main/src/net/include/icy/net/sslsocket.h#L61)

Initialize the [SSLSocket](#sslsocket) with the given [SSLContext](https://auscaster.com/icey/docs/api-reference/icy-net-SSLContext.md#sslcontext).

Initiates a secure connection to the peer at the given address.

The SSL handshake begins automatically once the TCP connection is established.

#### Reimplements

- [`TCPSocket::connect`](https://auscaster.com/icey/docs/api-reference/icy-net-TCPSocket.md#connect-7)

#### Parameters

| Parameter | Type | Description |
|-----------|------|-------------|
| `peerAddress` | const [`Address`](https://auscaster.com/icey/docs/api-reference/icy-net-Address.md#address) & | The remote address to connect to. |

---

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

### connect

`virtual` `override`

```cpp
virtual void connect(std::string_view host, uint16_t port) override
```

[Defined in src/net/include/icy/net/sslsocket.h:69](https://github.com/auscaster/icey/blob/main/src/net/include/icy/net/sslsocket.h#L69)

Resolves `host` and initiates a secure connection.

Sets the hostname on the SSL adapter for SNI and certificate verification before resolving and connecting.

#### Reimplements

- [`TCPSocket::connect`](https://auscaster.com/icey/docs/api-reference/icy-net-TCPSocket.md#connect-8)

#### Parameters

| Parameter | Type | Description |
|-----------|------|-------------|
| `host` | `std::string_view` | Hostname or IP address string. |
| `port` | `uint16_t` | Destination port. |

---

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

### bind

`virtual` `override`

```cpp
virtual void bind(const net::Address & address, unsigned flags = 0) override
```

[Defined in src/net/include/icy/net/sslsocket.h:75](https://github.com/auscaster/icey/blob/main/src/net/include/icy/net/sslsocket.h#L75)

Binds the socket to `address` for server-side use. Throws std::logic_error if the context is not a server context.

#### Reimplements

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

#### Parameters

| Parameter | Type | Description |
|-----------|------|-------------|
| `address` | const [`net::Address`](https://auscaster.com/icey/docs/api-reference/icy-net-Address.md#address) & | Local address to bind to. |
| `flags` | `unsigned` | Optional bind flags (passed to uv_tcp_bind). |

---

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

### listen

`virtual` `override`

```cpp
virtual void listen(int backlog = 64) override
```

[Defined in src/net/include/icy/net/sslsocket.h:80](https://github.com/auscaster/icey/blob/main/src/net/include/icy/net/sslsocket.h#L80)

Starts listening for incoming connections. Throws std::logic_error if the context is not a server context.

#### Reimplements

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

#### Parameters

| Parameter | Type | Description |
|-----------|------|-------------|
| `backlog` | `int` | Maximum number of pending connections. |

---

<a id="shutdown-6"></a>

### shutdown

`virtual` `override`

```cpp
virtual bool shutdown() override
```

[Defined in src/net/include/icy/net/sslsocket.h:85](https://github.com/auscaster/icey/blob/main/src/net/include/icy/net/sslsocket.h#L85)

Shuts down the connection by attempting an orderly SSL shutdown, then actually shutting down the TCP connection.

#### Reimplements

- [`Socket::shutdown`](https://auscaster.com/icey/docs/api-reference/icy-net-Socket.md#shutdown-3)

---

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

### close

`virtual` `override`

```cpp
virtual void close() override
```

[Defined in src/net/include/icy/net/sslsocket.h:88](https://github.com/auscaster/icey/blob/main/src/net/include/icy/net/sslsocket.h#L88)

Closes the socket forcefully.

#### Reimplements

- [`TCPSocket::close`](https://auscaster.com/icey/docs/api-reference/icy-net-TCPSocket.md#close-22)

---

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

### send

`virtual` `override`

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

[Defined in src/net/include/icy/net/sslsocket.h:95](https://github.com/auscaster/icey/blob/main/src/net/include/icy/net/sslsocket.h#L95)

Encrypts and sends `len` bytes to the connected peer. 
#### Returns
Number of plaintext bytes accepted, or -1 on error.

#### Reimplements

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

#### Parameters

| Parameter | Type | Description |
|-----------|------|-------------|
| `data` | `const char *` | Pointer to the plaintext payload. |
| `len` | `size_t` | Number of bytes to send. |
| `flags` | `int` | Reserved; currently unused. |

---

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

### sendOwned

`virtual` `override`

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

[Defined in src/net/include/icy/net/sslsocket.h:96](https://github.com/auscaster/icey/blob/main/src/net/include/icy/net/sslsocket.h#L96)

Sends an owned payload buffer to the connected peer.

#### Reimplements

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

---

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

### send

`virtual` `override`

```cpp
virtual ssize_t send(const char * data, size_t len, const net::Address & peerAddress, int flags = 0) override
```

[Defined in src/net/include/icy/net/sslsocket.h:104](https://github.com/auscaster/icey/blob/main/src/net/include/icy/net/sslsocket.h#L104)

Encrypts and sends `len` bytes, ignoring `peerAddress` (TCP is connected). 
#### Returns
Number of plaintext bytes accepted, or -1 on error.

#### Reimplements

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

#### Parameters

| Parameter | Type | Description |
|-----------|------|-------------|
| `data` | `const char *` | Pointer to the plaintext payload. |
| `len` | `size_t` | Number of bytes to send. |
| `peerAddress` | const [`net::Address`](https://auscaster.com/icey/docs/api-reference/icy-net-Address.md#address) & | Ignored for SSL/TCP; present for interface conformance. |
| `flags` | `int` | Reserved; currently unused. |

---

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

### sendOwned

`virtual` `override`

```cpp
virtual ssize_t sendOwned(Buffer && buffer, const net::Address & peerAddress, int flags = 0) override
```

[Defined in src/net/include/icy/net/sslsocket.h:106](https://github.com/auscaster/icey/blob/main/src/net/include/icy/net/sslsocket.h#L106)

#### Reimplements

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

---

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

### setHostname

```cpp
void setHostname(std::string_view hostname)
```

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

Set the expected peer hostname for certificate verification and SNI. Must be called before [connect()](#connect-5) to enable hostname verification.

---

<a id="usecontext"></a>

### useContext

```cpp
void useContext(SSLContext::Ptr context)
```

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

Use the given SSL context for this socket.

---

<a id="context-6"></a>

### context

`const`

```cpp
SSLContext::Ptr context() const
```

[Defined in src/net/include/icy/net/sslsocket.h:117](https://github.com/auscaster/icey/blob/main/src/net/include/icy/net/sslsocket.h#L117)

Returns the SSL context used for this socket.

---

<a id="usesession"></a>

### useSession

```cpp
void useSession(SSLSession::Ptr session)
```

[Defined in src/net/include/icy/net/sslsocket.h:127](https://github.com/auscaster/icey/blob/main/src/net/include/icy/net/sslsocket.h#L127)

Sets the SSL session to use for the next connection. Setting a previously saved Session object is necessary to enable session caching.

To remove the currently set session, a nullptr pointer can be given.

Must be called before [connect()](#connect-5) to be effective.

---

<a id="currentsession"></a>

### currentSession

```cpp
SSLSession::Ptr currentSession()
```

[Defined in src/net/include/icy/net/sslsocket.h:134](https://github.com/auscaster/icey/blob/main/src/net/include/icy/net/sslsocket.h#L134)

Returns the SSL session of the current connection, for reuse in a future connection (if session caching is enabled).

If no connection is established, returns nullptr.

---

<a id="sessionwasreused"></a>

### sessionWasReused

```cpp
bool sessionWasReused()
```

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

Returns true if a reused session was negotiated during the handshake.

---

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

### available

`const`

```cpp
int available() const
```

[Defined in src/net/include/icy/net/sslsocket.h:142](https://github.com/auscaster/icey/blob/main/src/net/include/icy/net/sslsocket.h#L142)

Returns the number of bytes available from the SSL buffer for immediate reading.

---

<a id="peercertificate"></a>

### peerCertificate

`const`

```cpp
X509 * peerCertificate() const
```

[Defined in src/net/include/icy/net/sslsocket.h:145](https://github.com/auscaster/icey/blob/main/src/net/include/icy/net/sslsocket.h#L145)

Returns the peer's X.509 certificate, or nullptr if no certificate was presented.

---

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

### transport

`virtual` `const` `override`

```cpp
virtual net::TransportType transport() const override
```

[Defined in src/net/include/icy/net/sslsocket.h:148](https://github.com/auscaster/icey/blob/main/src/net/include/icy/net/sslsocket.h#L148)

Returns the SSLTCP transport protocol identifier.

#### Reimplements

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

---

<a id="acceptconnection"></a>

### acceptConnection

`virtual` `override`

```cpp
virtual void acceptConnection() override
```

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

Accepts a pending client connection, initializes the server-side SSL context on the new socket, and fires the AcceptConnection signal.

#### Reimplements

- [`TCPSocket::acceptConnection`](https://auscaster.com/icey/docs/api-reference/icy-net-TCPSocket.md#acceptconnection-2)

---

<a id="onconnect"></a>

### onConnect

`virtual` `override`

```cpp
virtual void onConnect() override
```

[Defined in src/net/include/icy/net/sslsocket.h:156](https://github.com/auscaster/icey/blob/main/src/net/include/icy/net/sslsocket.h#L156)

Called when the TCP connection is established; starts reading and initiates the client-side SSL handshake.

#### Reimplements

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

---

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

### onRead

`virtual` `override`

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

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

Feeds raw encrypted bytes from the network into the SSL adapter. Called by the stream layer when ciphertext arrives from the peer.

#### Reimplements

- [`TCPSocket::onRead`](https://auscaster.com/icey/docs/api-reference/icy-net-TCPSocket.md#onread-2)

#### Parameters

| Parameter | Type | Description |
|-----------|------|-------------|
| `data` | `const char *` | Pointer to the encrypted bytes. |
| `len` | `size_t` | Number of bytes received. |

## Protected Attributes

| Return | Name | Description |
|--------|------|-------------|
| [`net::SSLContext::Ptr`](https://auscaster.com/icey/docs/api-reference/icy-net-SSLContext.md#ptr-11) | [`_sslContext`](#_sslcontext-1)  |  |
| [`net::SSLSession::Ptr`](https://auscaster.com/icey/docs/api-reference/icy-net-SSLSession.md#ptr-12) | [`_sslSession`](#_sslsession)  |  |
| [`net::SSLAdapter`](https://auscaster.com/icey/docs/api-reference/icy-net-SSLAdapter.md#ssladapter) | [`_sslAdapter`](#_ssladapter)  |  |

---

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

### _sslContext

```cpp
net::SSLContext::Ptr _sslContext
```

Type: [`net::SSLContext::Ptr`](https://auscaster.com/icey/docs/api-reference/icy-net-SSLContext.md#ptr-11)

[Defined in src/net/include/icy/net/sslsocket.h:165](https://github.com/auscaster/icey/blob/main/src/net/include/icy/net/sslsocket.h#L165)

---

<a id="_sslsession"></a>

### _sslSession

```cpp
net::SSLSession::Ptr _sslSession
```

Type: [`net::SSLSession::Ptr`](https://auscaster.com/icey/docs/api-reference/icy-net-SSLSession.md#ptr-12)

[Defined in src/net/include/icy/net/sslsocket.h:166](https://github.com/auscaster/icey/blob/main/src/net/include/icy/net/sslsocket.h#L166)

---

<a id="_ssladapter"></a>

### _sslAdapter

```cpp
net::SSLAdapter _sslAdapter
```

Type: [`net::SSLAdapter`](https://auscaster.com/icey/docs/api-reference/icy-net-SSLAdapter.md#ssladapter)

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

## Public Types

| Name | Description |
|------|-------------|
| [`Ptr`](#ptr-13)  |  |
| [`Vec`](#vec-1)  |  |

---

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

### Ptr

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

Type: std::shared_ptr< [`SSLSocket`](#sslsocket) >

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

---

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

### Vec

```cpp
using Vec = std::vector< Ptr >
```

Type: std::vector< [`Ptr`](#ptr-13) >

[Defined in src/net/include/icy/net/sslsocket.h:34](https://github.com/auscaster/icey/blob/main/src/net/include/icy/net/sslsocket.h#L34)
