# Transaction

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

# Transaction

```cpp
#include <icy/stun/transaction.h>

class Transaction
```

[Defined in src/stun/include/icy/stun/transaction.h:31](https://github.com/auscaster/icey/blob/main/src/stun/include/icy/stun/transaction.h#L31)

> **Inherits:** [`Transaction< Message >`](https://auscaster.com/icey/docs/api-reference/icy-net-Transaction.md#transaction)

STUN request/response transaction with timeout and retry logic. Extends the generic [net::Transaction](https://auscaster.com/icey/docs/api-reference/icy-net-Transaction.md#transaction) with STUN-specific transaction ID matching and response class inference (Success, [Error](https://auscaster.com/icey/docs/api-reference/icy-Error.md#error), or Indication).

Lifetime is managed by [IntrusivePtr](https://auscaster.com/icey/docs/api-reference/icy-IntrusivePtr.md#intrusiveptr). Create via makeIntrusive or wrap in [IntrusivePtr](https://auscaster.com/icey/docs/api-reference/icy-IntrusivePtr.md#intrusiveptr) immediately after construction.

## List of all members

| Name | Kind | Owner |
|------|------|-------|
| [`IntrusivePtr`](#icy-intrusiveptr-1) | `friend` | Declared here |
| [`Transaction`](#transaction-4) | `function` | Declared here |
| [`checkResponse`](#checkresponse-2) | `function` | Declared here |
| [`onResponse`](#onresponse-2) | `function` | Declared here |
| [`~Transaction`](#transaction-5) | `function` | Declared here |
| [`Ptr`](#ptr-21) | `typedef` | Declared here |
| [`IntrusivePtr`](https://auscaster.com/icey/docs/api-reference/icy-net-Transaction.md#icy-intrusiveptr) | `friend` | Inherited from [`Transaction`](https://auscaster.com/icey/docs/api-reference/icy-net-Transaction.md#transaction) |
| [`Transaction`](https://auscaster.com/icey/docs/api-reference/icy-net-Transaction.md#transaction-1) | `function` | Inherited from [`Transaction`](https://auscaster.com/icey/docs/api-reference/icy-net-Transaction.md#transaction) |
| [`send`](https://auscaster.com/icey/docs/api-reference/icy-net-Transaction.md#send-7) | `function` | Inherited from [`Transaction`](https://auscaster.com/icey/docs/api-reference/icy-net-Transaction.md#transaction) |
| [`cancel`](https://auscaster.com/icey/docs/api-reference/icy-net-Transaction.md#cancel-6) | `function` | Inherited from [`Transaction`](https://auscaster.com/icey/docs/api-reference/icy-net-Transaction.md#transaction) |
| [`dispose`](https://auscaster.com/icey/docs/api-reference/icy-net-Transaction.md#dispose-1) | `function` | Inherited from [`Transaction`](https://auscaster.com/icey/docs/api-reference/icy-net-Transaction.md#transaction) |
| [`peerAddress`](https://auscaster.com/icey/docs/api-reference/icy-net-Transaction.md#peeraddress-3) | `function` | Inherited from [`Transaction`](https://auscaster.com/icey/docs/api-reference/icy-net-Transaction.md#transaction) |
| [`_peerAddress`](https://auscaster.com/icey/docs/api-reference/icy-net-Transaction.md#_peeraddress-1) | `variable` | Inherited from [`Transaction`](https://auscaster.com/icey/docs/api-reference/icy-net-Transaction.md#transaction) |
| [`~Transaction`](https://auscaster.com/icey/docs/api-reference/icy-net-Transaction.md#transaction-2) | `function` | Inherited from [`Transaction`](https://auscaster.com/icey/docs/api-reference/icy-net-Transaction.md#transaction) |
| [`onPacket`](https://auscaster.com/icey/docs/api-reference/icy-net-Transaction.md#onpacket-1) | `function` | Inherited from [`Transaction`](https://auscaster.com/icey/docs/api-reference/icy-net-Transaction.md#transaction) |
| [`onResponse`](https://auscaster.com/icey/docs/api-reference/icy-net-Transaction.md#onresponse-1) | `function` | Inherited from [`Transaction`](https://auscaster.com/icey/docs/api-reference/icy-net-Transaction.md#transaction) |
| [`checkResponse`](https://auscaster.com/icey/docs/api-reference/icy-net-Transaction.md#checkresponse-1) | `function` | Inherited from [`Transaction`](https://auscaster.com/icey/docs/api-reference/icy-net-Transaction.md#transaction) |
| [`BaseT`](https://auscaster.com/icey/docs/api-reference/icy-net-Transaction.md#baset) | `typedef` | Inherited from [`Transaction`](https://auscaster.com/icey/docs/api-reference/icy-net-Transaction.md#transaction) |
| [`IntrusivePtr`](https://auscaster.com/icey/docs/api-reference/icy-PacketTransaction.md#intrusiveptr-9) | `friend` | Inherited from [`PacketTransaction`](https://auscaster.com/icey/docs/api-reference/icy-PacketTransaction.md#packettransaction) |
| [`PacketTransaction`](https://auscaster.com/icey/docs/api-reference/icy-PacketTransaction.md#packettransaction-1) | `function` | Inherited from [`PacketTransaction`](https://auscaster.com/icey/docs/api-reference/icy-PacketTransaction.md#packettransaction) |
| [`PacketTransaction`](https://auscaster.com/icey/docs/api-reference/icy-PacketTransaction.md#packettransaction-2) | `function` | Inherited from [`PacketTransaction`](https://auscaster.com/icey/docs/api-reference/icy-PacketTransaction.md#packettransaction) |
| [`send`](https://auscaster.com/icey/docs/api-reference/icy-PacketTransaction.md#send) | `function` | Inherited from [`PacketTransaction`](https://auscaster.com/icey/docs/api-reference/icy-PacketTransaction.md#packettransaction) |
| [`cancel`](https://auscaster.com/icey/docs/api-reference/icy-PacketTransaction.md#cancel-1) | `function` | Inherited from [`PacketTransaction`](https://auscaster.com/icey/docs/api-reference/icy-PacketTransaction.md#packettransaction) |
| [`cancelled`](https://auscaster.com/icey/docs/api-reference/icy-PacketTransaction.md#cancelled) | `function` | Inherited from [`PacketTransaction`](https://auscaster.com/icey/docs/api-reference/icy-PacketTransaction.md#packettransaction) |
| [`dispose`](https://auscaster.com/icey/docs/api-reference/icy-PacketTransaction.md#dispose) | `function` | Inherited from [`PacketTransaction`](https://auscaster.com/icey/docs/api-reference/icy-PacketTransaction.md#packettransaction) |
| [`disposed`](https://auscaster.com/icey/docs/api-reference/icy-PacketTransaction.md#disposed) | `function` | Inherited from [`PacketTransaction`](https://auscaster.com/icey/docs/api-reference/icy-PacketTransaction.md#packettransaction) |
| [`canResend`](https://auscaster.com/icey/docs/api-reference/icy-PacketTransaction.md#canresend) | `function` | Inherited from [`PacketTransaction`](https://auscaster.com/icey/docs/api-reference/icy-PacketTransaction.md#packettransaction) |
| [`attempts`](https://auscaster.com/icey/docs/api-reference/icy-PacketTransaction.md#attempts) | `function` | Inherited from [`PacketTransaction`](https://auscaster.com/icey/docs/api-reference/icy-PacketTransaction.md#packettransaction) |
| [`retries`](https://auscaster.com/icey/docs/api-reference/icy-PacketTransaction.md#retries) | `function` | Inherited from [`PacketTransaction`](https://auscaster.com/icey/docs/api-reference/icy-PacketTransaction.md#packettransaction) |
| [`request`](https://auscaster.com/icey/docs/api-reference/icy-PacketTransaction.md#request) | `function` | Inherited from [`PacketTransaction`](https://auscaster.com/icey/docs/api-reference/icy-PacketTransaction.md#packettransaction) |
| [`request`](https://auscaster.com/icey/docs/api-reference/icy-PacketTransaction.md#request-1) | `function` | Inherited from [`PacketTransaction`](https://auscaster.com/icey/docs/api-reference/icy-PacketTransaction.md#packettransaction) |
| [`response`](https://auscaster.com/icey/docs/api-reference/icy-PacketTransaction.md#response) | `function` | Inherited from [`PacketTransaction`](https://auscaster.com/icey/docs/api-reference/icy-PacketTransaction.md#packettransaction) |
| [`response`](https://auscaster.com/icey/docs/api-reference/icy-PacketTransaction.md#response-1) | `function` | Inherited from [`PacketTransaction`](https://auscaster.com/icey/docs/api-reference/icy-PacketTransaction.md#packettransaction) |
| [`_request`](https://auscaster.com/icey/docs/api-reference/icy-PacketTransaction.md#_request) | `variable` | Inherited from [`PacketTransaction`](https://auscaster.com/icey/docs/api-reference/icy-PacketTransaction.md#packettransaction) |
| [`_response`](https://auscaster.com/icey/docs/api-reference/icy-PacketTransaction.md#_response) | `variable` | Inherited from [`PacketTransaction`](https://auscaster.com/icey/docs/api-reference/icy-PacketTransaction.md#packettransaction) |
| [`_timer`](https://auscaster.com/icey/docs/api-reference/icy-PacketTransaction.md#_timer) | `variable` | Inherited from [`PacketTransaction`](https://auscaster.com/icey/docs/api-reference/icy-PacketTransaction.md#packettransaction) |
| [`_retries`](https://auscaster.com/icey/docs/api-reference/icy-PacketTransaction.md#_retries) | `variable` | Inherited from [`PacketTransaction`](https://auscaster.com/icey/docs/api-reference/icy-PacketTransaction.md#packettransaction) |
| [`_attempts`](https://auscaster.com/icey/docs/api-reference/icy-PacketTransaction.md#_attempts) | `variable` | Inherited from [`PacketTransaction`](https://auscaster.com/icey/docs/api-reference/icy-PacketTransaction.md#packettransaction) |
| [`_disposed`](https://auscaster.com/icey/docs/api-reference/icy-PacketTransaction.md#_disposed) | `variable` | Inherited from [`PacketTransaction`](https://auscaster.com/icey/docs/api-reference/icy-PacketTransaction.md#packettransaction) |
| [`~PacketTransaction`](https://auscaster.com/icey/docs/api-reference/icy-PacketTransaction.md#packettransaction-3) | `function` | Inherited from [`PacketTransaction`](https://auscaster.com/icey/docs/api-reference/icy-PacketTransaction.md#packettransaction) |
| [`onStateChange`](https://auscaster.com/icey/docs/api-reference/icy-PacketTransaction.md#onstatechange-1) | `function` | Inherited from [`PacketTransaction`](https://auscaster.com/icey/docs/api-reference/icy-PacketTransaction.md#packettransaction) |
| [`handlePotentialResponse`](https://auscaster.com/icey/docs/api-reference/icy-PacketTransaction.md#handlepotentialresponse) | `function` | Inherited from [`PacketTransaction`](https://auscaster.com/icey/docs/api-reference/icy-PacketTransaction.md#packettransaction) |
| [`checkResponse`](https://auscaster.com/icey/docs/api-reference/icy-PacketTransaction.md#checkresponse) | `function` | Inherited from [`PacketTransaction`](https://auscaster.com/icey/docs/api-reference/icy-PacketTransaction.md#packettransaction) |
| [`onResponse`](https://auscaster.com/icey/docs/api-reference/icy-PacketTransaction.md#onresponse) | `function` | Inherited from [`PacketTransaction`](https://auscaster.com/icey/docs/api-reference/icy-PacketTransaction.md#packettransaction) |
| [`onTimeout`](https://auscaster.com/icey/docs/api-reference/icy-PacketTransaction.md#ontimeout) | `function` | Inherited from [`PacketTransaction`](https://auscaster.com/icey/docs/api-reference/icy-PacketTransaction.md#packettransaction) |
| [`Ptr`](https://auscaster.com/icey/docs/api-reference/icy-PacketTransaction.md#ptr-3) | `typedef` | Inherited from [`PacketTransaction`](https://auscaster.com/icey/docs/api-reference/icy-PacketTransaction.md#packettransaction) |
| [`send`](https://auscaster.com/icey/docs/api-reference/icy-basic-Sendable.md#send-10) | `function` | Inherited from [`Sendable`](https://auscaster.com/icey/docs/api-reference/icy-basic-Sendable.md#sendable) |
| [`cancel`](https://auscaster.com/icey/docs/api-reference/icy-basic-Sendable.md#cancel-8) | `function` | Inherited from [`Sendable`](https://auscaster.com/icey/docs/api-reference/icy-basic-Sendable.md#sendable) |
| [`StateChange`](https://auscaster.com/icey/docs/api-reference/icy-Stateful.md#statechange) | `variable` | Inherited from [`Stateful`](https://auscaster.com/icey/docs/api-reference/icy-Stateful.md#stateful) |
| [`Stateful`](https://auscaster.com/icey/docs/api-reference/icy-Stateful.md#stateful-1) | `function` | Inherited from [`Stateful`](https://auscaster.com/icey/docs/api-reference/icy-Stateful.md#stateful) |
| [`~Stateful`](https://auscaster.com/icey/docs/api-reference/icy-Stateful.md#stateful-2) | `function` | Inherited from [`Stateful`](https://auscaster.com/icey/docs/api-reference/icy-Stateful.md#stateful) |
| [`stateEquals`](https://auscaster.com/icey/docs/api-reference/icy-Stateful.md#stateequals) | `function` | Inherited from [`Stateful`](https://auscaster.com/icey/docs/api-reference/icy-Stateful.md#stateful) |
| [`stateBetween`](https://auscaster.com/icey/docs/api-reference/icy-Stateful.md#statebetween) | `function` | Inherited from [`Stateful`](https://auscaster.com/icey/docs/api-reference/icy-Stateful.md#stateful) |
| [`state`](https://auscaster.com/icey/docs/api-reference/icy-Stateful.md#state-4) | `function` | Inherited from [`Stateful`](https://auscaster.com/icey/docs/api-reference/icy-Stateful.md#stateful) |
| [`state`](https://auscaster.com/icey/docs/api-reference/icy-Stateful.md#state-5) | `function` | Inherited from [`Stateful`](https://auscaster.com/icey/docs/api-reference/icy-Stateful.md#stateful) |
| [`_state`](https://auscaster.com/icey/docs/api-reference/icy-Stateful.md#_state) | `variable` | Inherited from [`Stateful`](https://auscaster.com/icey/docs/api-reference/icy-Stateful.md#stateful) |
| [`beforeStateChange`](https://auscaster.com/icey/docs/api-reference/icy-Stateful.md#beforestatechange) | `function` | Inherited from [`Stateful`](https://auscaster.com/icey/docs/api-reference/icy-Stateful.md#stateful) |
| [`onStateChange`](https://auscaster.com/icey/docs/api-reference/icy-Stateful.md#onstatechange-2) | `function` | Inherited from [`Stateful`](https://auscaster.com/icey/docs/api-reference/icy-Stateful.md#stateful) |
| [`setState`](https://auscaster.com/icey/docs/api-reference/icy-Stateful.md#setstate) | `function` | Inherited from [`Stateful`](https://auscaster.com/icey/docs/api-reference/icy-Stateful.md#stateful) |
| [`setState`](https://auscaster.com/icey/docs/api-reference/icy-Stateful.md#setstate-1) | `function` | Inherited from [`Stateful`](https://auscaster.com/icey/docs/api-reference/icy-Stateful.md#stateful) |
| [`RefCounted`](https://auscaster.com/icey/docs/api-reference/icy-RefCounted.md#refcounted-1) | `function` | Inherited from [`RefCounted`](https://auscaster.com/icey/docs/api-reference/icy-RefCounted.md#refcounted) |
| [`RefCounted`](https://auscaster.com/icey/docs/api-reference/icy-RefCounted.md#refcounted-2) | `function` | Inherited from [`RefCounted`](https://auscaster.com/icey/docs/api-reference/icy-RefCounted.md#refcounted) |
| [`operator=`](https://auscaster.com/icey/docs/api-reference/icy-RefCounted.md#operator-78) | `function` | Inherited from [`RefCounted`](https://auscaster.com/icey/docs/api-reference/icy-RefCounted.md#refcounted) |
| [`addRef`](https://auscaster.com/icey/docs/api-reference/icy-RefCounted.md#addref) | `function` | Inherited from [`RefCounted`](https://auscaster.com/icey/docs/api-reference/icy-RefCounted.md#refcounted) |
| [`releaseRef`](https://auscaster.com/icey/docs/api-reference/icy-RefCounted.md#releaseref) | `function` | Inherited from [`RefCounted`](https://auscaster.com/icey/docs/api-reference/icy-RefCounted.md#refcounted) |
| [`refCount`](https://auscaster.com/icey/docs/api-reference/icy-RefCounted.md#refcount) | `function` | Inherited from [`RefCounted`](https://auscaster.com/icey/docs/api-reference/icy-RefCounted.md#refcounted) |
| [`~RefCounted`](https://auscaster.com/icey/docs/api-reference/icy-RefCounted.md#refcounted-3) | `function` | Inherited from [`RefCounted`](https://auscaster.com/icey/docs/api-reference/icy-RefCounted.md#refcounted) |
| [`_refCount`](https://auscaster.com/icey/docs/api-reference/icy-RefCounted.md#_refcount) | `variable` | Inherited from [`RefCounted`](https://auscaster.com/icey/docs/api-reference/icy-RefCounted.md#refcounted) |
| [`factory`](https://auscaster.com/icey/docs/api-reference/icy-net-PacketSocketEmitter.md#factory) | `variable` | Inherited from [`PacketSocketEmitter`](https://auscaster.com/icey/docs/api-reference/icy-net-PacketSocketEmitter.md#packetsocketemitter) |
| [`PacketSocketEmitter`](https://auscaster.com/icey/docs/api-reference/icy-net-PacketSocketEmitter.md#packetsocketemitter-1) | `function` | Inherited from [`PacketSocketEmitter`](https://auscaster.com/icey/docs/api-reference/icy-net-PacketSocketEmitter.md#packetsocketemitter) |
| [`~PacketSocketEmitter`](https://auscaster.com/icey/docs/api-reference/icy-net-PacketSocketEmitter.md#packetsocketemitter-2) | `function` | Inherited from [`PacketSocketEmitter`](https://auscaster.com/icey/docs/api-reference/icy-net-PacketSocketEmitter.md#packetsocketemitter) |
| [`onSocketRecv`](https://auscaster.com/icey/docs/api-reference/icy-net-PacketSocketEmitter.md#onsocketrecv) | `function` | Inherited from [`PacketSocketEmitter`](https://auscaster.com/icey/docs/api-reference/icy-net-PacketSocketEmitter.md#packetsocketemitter) |
| [`onPacket`](https://auscaster.com/icey/docs/api-reference/icy-net-PacketSocketEmitter.md#onpacket) | `function` | Inherited from [`PacketSocketEmitter`](https://auscaster.com/icey/docs/api-reference/icy-net-PacketSocketEmitter.md#packetsocketemitter) |
| [`Connect`](https://auscaster.com/icey/docs/api-reference/icy-net-SocketEmitter.md#connect-4) | `variable` | Inherited from [`SocketEmitter`](https://auscaster.com/icey/docs/api-reference/icy-net-SocketEmitter.md#socketemitter) |
| [`Recv`](https://auscaster.com/icey/docs/api-reference/icy-net-SocketEmitter.md#recv) | `variable` | Inherited from [`SocketEmitter`](https://auscaster.com/icey/docs/api-reference/icy-net-SocketEmitter.md#socketemitter) |
| [`Error`](https://auscaster.com/icey/docs/api-reference/icy-net-SocketEmitter.md#error-13) | `variable` | Inherited from [`SocketEmitter`](https://auscaster.com/icey/docs/api-reference/icy-net-SocketEmitter.md#socketemitter) |
| [`Close`](https://auscaster.com/icey/docs/api-reference/icy-net-SocketEmitter.md#close-20) | `variable` | Inherited from [`SocketEmitter`](https://auscaster.com/icey/docs/api-reference/icy-net-SocketEmitter.md#socketemitter) |
| [`impl`](https://auscaster.com/icey/docs/api-reference/icy-net-SocketEmitter.md#impl) | `variable` | Inherited from [`SocketEmitter`](https://auscaster.com/icey/docs/api-reference/icy-net-SocketEmitter.md#socketemitter) |
| [`SocketEmitter`](https://auscaster.com/icey/docs/api-reference/icy-net-SocketEmitter.md#socketemitter-1) | `function` | Inherited from [`SocketEmitter`](https://auscaster.com/icey/docs/api-reference/icy-net-SocketEmitter.md#socketemitter) |
| [`SocketEmitter`](https://auscaster.com/icey/docs/api-reference/icy-net-SocketEmitter.md#socketemitter-2) | `function` | Inherited from [`SocketEmitter`](https://auscaster.com/icey/docs/api-reference/icy-net-SocketEmitter.md#socketemitter) |
| [`~SocketEmitter`](https://auscaster.com/icey/docs/api-reference/icy-net-SocketEmitter.md#socketemitter-3) | `function` | Inherited from [`SocketEmitter`](https://auscaster.com/icey/docs/api-reference/icy-net-SocketEmitter.md#socketemitter) |
| [`addReceiver`](https://auscaster.com/icey/docs/api-reference/icy-net-SocketEmitter.md#addreceiver-1) | `function` | Inherited from [`SocketEmitter`](https://auscaster.com/icey/docs/api-reference/icy-net-SocketEmitter.md#socketemitter) |
| [`removeReceiver`](https://auscaster.com/icey/docs/api-reference/icy-net-SocketEmitter.md#removereceiver-1) | `function` | Inherited from [`SocketEmitter`](https://auscaster.com/icey/docs/api-reference/icy-net-SocketEmitter.md#socketemitter) |
| [`swap`](https://auscaster.com/icey/docs/api-reference/icy-net-SocketEmitter.md#swap-11) | `function` | Inherited from [`SocketEmitter`](https://auscaster.com/icey/docs/api-reference/icy-net-SocketEmitter.md#socketemitter) |
| [`as`](https://auscaster.com/icey/docs/api-reference/icy-net-SocketEmitter.md#as) | `function` | Inherited from [`SocketEmitter`](https://auscaster.com/icey/docs/api-reference/icy-net-SocketEmitter.md#socketemitter) |
| [`operator->`](https://auscaster.com/icey/docs/api-reference/icy-net-SocketEmitter.md#operator-180) | `function` | Inherited from [`SocketEmitter`](https://auscaster.com/icey/docs/api-reference/icy-net-SocketEmitter.md#socketemitter) |
| [`onSocketConnect`](https://auscaster.com/icey/docs/api-reference/icy-net-SocketEmitter.md#onsocketconnect-1) | `function` | Inherited from [`SocketEmitter`](https://auscaster.com/icey/docs/api-reference/icy-net-SocketEmitter.md#socketemitter) |
| [`onSocketRecv`](https://auscaster.com/icey/docs/api-reference/icy-net-SocketEmitter.md#onsocketrecv-2) | `function` | Inherited from [`SocketEmitter`](https://auscaster.com/icey/docs/api-reference/icy-net-SocketEmitter.md#socketemitter) |
| [`onSocketError`](https://auscaster.com/icey/docs/api-reference/icy-net-SocketEmitter.md#onsocketerror-1) | `function` | Inherited from [`SocketEmitter`](https://auscaster.com/icey/docs/api-reference/icy-net-SocketEmitter.md#socketemitter) |
| [`onSocketClose`](https://auscaster.com/icey/docs/api-reference/icy-net-SocketEmitter.md#onsocketclose-1) | `function` | Inherited from [`SocketEmitter`](https://auscaster.com/icey/docs/api-reference/icy-net-SocketEmitter.md#socketemitter) |
| [`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 [`Transaction`](https://auscaster.com/icey/docs/api-reference/icy-net-Transaction.md#transaction)

| Kind | Name | Description |
|------|------|-------------|
| `friend` | [`IntrusivePtr`](https://auscaster.com/icey/docs/api-reference/icy-net-Transaction.md#icy-intrusiveptr)  |  |
| `function` | [`Transaction`](https://auscaster.com/icey/docs/api-reference/icy-net-Transaction.md#transaction-1) `inline` | Constructs a [Transaction](https://auscaster.com/icey/docs/api-reference/icy-net-Transaction.md#transaction) on the given socket targeting `peerAddress`. |
| `function` | [`send`](https://auscaster.com/icey/docs/api-reference/icy-net-Transaction.md#send-7) `virtual` `inline` `override` | Sends the request packet to the peer address and starts the timeout timer. Sets state to Failed and returns false if the packet could not be sent. |
| `function` | [`cancel`](https://auscaster.com/icey/docs/api-reference/icy-net-Transaction.md#cancel-6) `virtual` `inline` `override` | Cancels the transaction and stops the timeout timer. |
| `function` | [`dispose`](https://auscaster.com/icey/docs/api-reference/icy-net-Transaction.md#dispose-1) `virtual` `inline` `override` | Stops the timer and unregisters callbacks. |
| `function` | [`peerAddress`](https://auscaster.com/icey/docs/api-reference/icy-net-Transaction.md#peeraddress-3) `const` `inline` | Returns the remote peer address used for this transaction. |
| `variable` | [`_peerAddress`](https://auscaster.com/icey/docs/api-reference/icy-net-Transaction.md#_peeraddress-1)  |  |
| `function` | [`~Transaction`](https://auscaster.com/icey/docs/api-reference/icy-net-Transaction.md#transaction-2) `virtual` | Defaulted destructor. |
| `function` | [`onPacket`](https://auscaster.com/icey/docs/api-reference/icy-net-Transaction.md#onpacket-1) `virtual` `inline` `override` | Checks whether `packet` is a matching response for the pending request. If it matches, the transaction completes; socket data propagation stops. |
| `function` | [`onResponse`](https://auscaster.com/icey/docs/api-reference/icy-net-Transaction.md#onresponse-1) `virtual` `inline` `override` | Called when a confirmed response is received; emits the response via PacketSignal. |
| `function` | [`checkResponse`](https://auscaster.com/icey/docs/api-reference/icy-net-Transaction.md#checkresponse-1) `virtual` `inline` `override` | Returns true if `packet` is a valid response for this transaction. |
| `typedef` | [`BaseT`](https://auscaster.com/icey/docs/api-reference/icy-net-Transaction.md#baset)  |  |

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

| Kind | Name | Description |
|------|------|-------------|
| `friend` | [`IntrusivePtr`](https://auscaster.com/icey/docs/api-reference/icy-PacketTransaction.md#intrusiveptr-9)  |  |
| `function` | [`PacketTransaction`](https://auscaster.com/icey/docs/api-reference/icy-PacketTransaction.md#packettransaction-1) `inline` |  |
| `function` | [`PacketTransaction`](https://auscaster.com/icey/docs/api-reference/icy-PacketTransaction.md#packettransaction-2) `inline` |  |
| `function` | [`send`](https://auscaster.com/icey/docs/api-reference/icy-PacketTransaction.md#send) `virtual` `inline` `override` | Starts the transaction timer and sends the request. Overriding classes should implement send logic here. |
| `function` | [`cancel`](https://auscaster.com/icey/docs/api-reference/icy-PacketTransaction.md#cancel-1) `virtual` `inline` `override` | Cancellation means that the agent will not retransmit the request, will not treat the lack of response to be a failure, but will wait the duration of the transaction timeout for a response. Transitions the transaction to the `Cancelled` state. |
| `function` | [`cancelled`](https://auscaster.com/icey/docs/api-reference/icy-PacketTransaction.md#cancelled) `const` `inline` |  |
| `function` | [`dispose`](https://auscaster.com/icey/docs/api-reference/icy-PacketTransaction.md#dispose) `virtual` `inline` | Stops the timer and unregisters callbacks. Does NOT delete the object; the [IntrusivePtr](https://auscaster.com/icey/docs/api-reference/icy-IntrusivePtr.md#intrusiveptr) destructor handles deletion when the last reference is released. Safe to call multiple times. |
| `function` | [`disposed`](https://auscaster.com/icey/docs/api-reference/icy-PacketTransaction.md#disposed) `const` `inline` |  |
| `function` | [`canResend`](https://auscaster.com/icey/docs/api-reference/icy-PacketTransaction.md#canresend) `virtual` `inline` |  |
| `function` | [`attempts`](https://auscaster.com/icey/docs/api-reference/icy-PacketTransaction.md#attempts) `const` `inline` |  |
| `function` | [`retries`](https://auscaster.com/icey/docs/api-reference/icy-PacketTransaction.md#retries) `const` `inline` |  |
| `function` | [`request`](https://auscaster.com/icey/docs/api-reference/icy-PacketTransaction.md#request) `inline` |  |
| `function` | [`request`](https://auscaster.com/icey/docs/api-reference/icy-PacketTransaction.md#request-1) `const` `inline` |  |
| `function` | [`response`](https://auscaster.com/icey/docs/api-reference/icy-PacketTransaction.md#response) `inline` |  |
| `function` | [`response`](https://auscaster.com/icey/docs/api-reference/icy-PacketTransaction.md#response-1) `const` `inline` |  |
| `variable` | [`_request`](https://auscaster.com/icey/docs/api-reference/icy-PacketTransaction.md#_request)  |  |
| `variable` | [`_response`](https://auscaster.com/icey/docs/api-reference/icy-PacketTransaction.md#_response)  |  |
| `variable` | [`_timer`](https://auscaster.com/icey/docs/api-reference/icy-PacketTransaction.md#_timer)  | The request timeout callback. |
| `variable` | [`_retries`](https://auscaster.com/icey/docs/api-reference/icy-PacketTransaction.md#_retries)  | The maximum number of attempts before the transaction is considered failed. |
| `variable` | [`_attempts`](https://auscaster.com/icey/docs/api-reference/icy-PacketTransaction.md#_attempts)  | The number of times the transaction has been sent. |
| `variable` | [`_disposed`](https://auscaster.com/icey/docs/api-reference/icy-PacketTransaction.md#_disposed)  |  |
| `function` | [`~PacketTransaction`](https://auscaster.com/icey/docs/api-reference/icy-PacketTransaction.md#packettransaction-3) `virtual` `inline` |  |
| `function` | [`onStateChange`](https://auscaster.com/icey/docs/api-reference/icy-PacketTransaction.md#onstatechange-1) `virtual` `inline` `override` | Post state change hook. Calls [dispose()](https://auscaster.com/icey/docs/api-reference/icy-PacketTransaction.md#dispose) on terminal states to stop the timer, but does not delete the object; [IntrusivePtr](https://auscaster.com/icey/docs/api-reference/icy-IntrusivePtr.md#intrusiveptr) handles that. |
| `function` | [`handlePotentialResponse`](https://auscaster.com/icey/docs/api-reference/icy-PacketTransaction.md#handlepotentialresponse) `virtual` `inline` | Processes a potential response candidate and updates the state accordingly. |
| `function` | [`checkResponse`](https://auscaster.com/icey/docs/api-reference/icy-PacketTransaction.md#checkresponse) `virtual` | Checks a potential response candidate and returns true on successful match. |
| `function` | [`onResponse`](https://auscaster.com/icey/docs/api-reference/icy-PacketTransaction.md#onresponse) `virtual` `inline` | Called when a successful response is received. |
| `function` | [`onTimeout`](https://auscaster.com/icey/docs/api-reference/icy-PacketTransaction.md#ontimeout) `virtual` `inline` | Called by the timer when the transaction timeout elapses. Retransmits if retries remain, otherwise transitions to `Failed`. |
| `typedef` | [`Ptr`](https://auscaster.com/icey/docs/api-reference/icy-PacketTransaction.md#ptr-3)  |  |

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

| Kind | Name | Description |
|------|------|-------------|
| `function` | [`send`](https://auscaster.com/icey/docs/api-reference/icy-basic-Sendable.md#send-10) `virtual` | Initiates the send operation. |
| `function` | [`cancel`](https://auscaster.com/icey/docs/api-reference/icy-basic-Sendable.md#cancel-8) `virtual` | Cancels a pending send operation. |

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

| Kind | Name | Description |
|------|------|-------------|
| `variable` | [`StateChange`](https://auscaster.com/icey/docs/api-reference/icy-Stateful.md#statechange)  | Signals when the state changes. |
| `function` | [`Stateful`](https://auscaster.com/icey/docs/api-reference/icy-Stateful.md#stateful-1) `inline` |  |
| `function` | [`~Stateful`](https://auscaster.com/icey/docs/api-reference/icy-Stateful.md#stateful-2) `virtual` `inline` |  |
| `function` | [`stateEquals`](https://auscaster.com/icey/docs/api-reference/icy-Stateful.md#stateequals) `virtual` `const` `inline` | Returns true if the current state ID equals the given ID. |
| `function` | [`stateBetween`](https://auscaster.com/icey/docs/api-reference/icy-Stateful.md#statebetween) `virtual` `const` `inline` | Returns true if the current state ID is in the inclusive range [lid, rid]. |
| `function` | [`state`](https://auscaster.com/icey/docs/api-reference/icy-Stateful.md#state-4) `virtual` `inline` | Returns a mutable reference to the current state. |
| `function` | [`state`](https://auscaster.com/icey/docs/api-reference/icy-Stateful.md#state-5) `virtual` `const` `inline` | Returns a copy of the current state. |
| `variable` | [`_state`](https://auscaster.com/icey/docs/api-reference/icy-Stateful.md#_state)  |  |
| `function` | [`beforeStateChange`](https://auscaster.com/icey/docs/api-reference/icy-Stateful.md#beforestatechange) `virtual` `inline` | Override to handle pre state change logic. Return false to prevent state change. |
| `function` | [`onStateChange`](https://auscaster.com/icey/docs/api-reference/icy-Stateful.md#onstatechange-2) `virtual` `inline` | Override to handle post state change logic. |
| `function` | [`setState`](https://auscaster.com/icey/docs/api-reference/icy-Stateful.md#setstate) `virtual` `inline` | Sets the state and sends the state signal if the state change was successful. |
| `function` | [`setState`](https://auscaster.com/icey/docs/api-reference/icy-Stateful.md#setstate-1) `virtual` `inline` | Sets the state and sends the state signal if the state change was successful. |

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

| Kind | Name | Description |
|------|------|-------------|
| `function` | [`RefCounted`](https://auscaster.com/icey/docs/api-reference/icy-RefCounted.md#refcounted-1)  | Defaulted constructor. |
| `function` | [`RefCounted`](https://auscaster.com/icey/docs/api-reference/icy-RefCounted.md#refcounted-2) `inline` `noexcept` |  |
| `function` | [`operator=`](https://auscaster.com/icey/docs/api-reference/icy-RefCounted.md#operator-78) `inline` `noexcept` |  |
| `function` | [`addRef`](https://auscaster.com/icey/docs/api-reference/icy-RefCounted.md#addref) `const` `inline` `noexcept` | Increments the reference count. Called by [IntrusivePtr](https://auscaster.com/icey/docs/api-reference/icy-IntrusivePtr.md#intrusiveptr) on acquisition. |
| `function` | [`releaseRef`](https://auscaster.com/icey/docs/api-reference/icy-RefCounted.md#releaseref) `const` `inline` `noexcept` | Decrements the reference count. |
| `function` | [`refCount`](https://auscaster.com/icey/docs/api-reference/icy-RefCounted.md#refcount) `const` `inline` `noexcept` | Returns the current reference count. |
| `function` | [`~RefCounted`](https://auscaster.com/icey/docs/api-reference/icy-RefCounted.md#refcounted-3)  | Defaulted destructor. |
| `variable` | [`_refCount`](https://auscaster.com/icey/docs/api-reference/icy-RefCounted.md#_refcount)  |  |

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

| Kind | Name | Description |
|------|------|-------------|
| `variable` | [`factory`](https://auscaster.com/icey/docs/api-reference/icy-net-PacketSocketEmitter.md#factory)  | The packet factory. |
| `function` | [`PacketSocketEmitter`](https://auscaster.com/icey/docs/api-reference/icy-net-PacketSocketEmitter.md#packetsocketemitter-1)  | Creates the [PacketSocketEmitter](https://auscaster.com/icey/docs/api-reference/icy-net-PacketSocketEmitter.md#packetsocketemitter) and attaches it to the given socket. |
| `function` | [`~PacketSocketEmitter`](https://auscaster.com/icey/docs/api-reference/icy-net-PacketSocketEmitter.md#packetsocketemitter-2) `virtual` `noexcept` |  |
| `function` | [`onSocketRecv`](https://auscaster.com/icey/docs/api-reference/icy-net-PacketSocketEmitter.md#onsocketrecv) `virtual` `override` | Parses raw received data into packets via the factory and forwards each parsed packet to [onPacket()](https://auscaster.com/icey/docs/api-reference/icy-net-PacketSocketEmitter.md#onpacket). Returns true if propagation should stop. |
| `function` | [`onPacket`](https://auscaster.com/icey/docs/api-reference/icy-net-PacketSocketEmitter.md#onpacket) `virtual` | [Process](https://auscaster.com/icey/docs/api-reference/icy-Process.md#process-3) a parsed packet. Returns true to stop propagation. |

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

| Kind | Name | Description |
|------|------|-------------|
| `variable` | [`Connect`](https://auscaster.com/icey/docs/api-reference/icy-net-SocketEmitter.md#connect-4)  | Signals that the socket is connected. |
| `variable` | [`Recv`](https://auscaster.com/icey/docs/api-reference/icy-net-SocketEmitter.md#recv)  | Signals when data is received by the socket. |
| `variable` | [`Error`](https://auscaster.com/icey/docs/api-reference/icy-net-SocketEmitter.md#error-13)  | Signals that the socket is closed in error. This signal will be sent just before the Closed signal. |
| `variable` | [`Close`](https://auscaster.com/icey/docs/api-reference/icy-net-SocketEmitter.md#close-20)  | Signals that the underlying socket is closed. |
| `variable` | [`impl`](https://auscaster.com/icey/docs/api-reference/icy-net-SocketEmitter.md#impl)  | Pointer to the underlying socket. Sent data will be proxied to this socket. |
| `function` | [`SocketEmitter`](https://auscaster.com/icey/docs/api-reference/icy-net-SocketEmitter.md#socketemitter-1)  | Creates the [SocketEmitter](https://auscaster.com/icey/docs/api-reference/icy-net-SocketEmitter.md#socketemitter) and optionally attaches it to a socket. If `socket` is provided, this emitter registers itself as a receiver. |
| `function` | [`SocketEmitter`](https://auscaster.com/icey/docs/api-reference/icy-net-SocketEmitter.md#socketemitter-2)  | Copy constructor; copies all signal connections and attaches to the same socket. |
| `function` | [`~SocketEmitter`](https://auscaster.com/icey/docs/api-reference/icy-net-SocketEmitter.md#socketemitter-3) `virtual` `noexcept` | Destroys the [SocketAdapter](https://auscaster.com/icey/docs/api-reference/icy-net-SocketAdapter.md#socketadapter). |
| `function` | [`addReceiver`](https://auscaster.com/icey/docs/api-reference/icy-net-SocketEmitter.md#addreceiver-1) `virtual` `override` | Attaches a [SocketAdapter](https://auscaster.com/icey/docs/api-reference/icy-net-SocketAdapter.md#socketadapter) as a receiver; wires it to all four socket signals. |
| `function` | [`removeReceiver`](https://auscaster.com/icey/docs/api-reference/icy-net-SocketEmitter.md#removereceiver-1) `virtual` `override` | Detaches a [SocketAdapter](https://auscaster.com/icey/docs/api-reference/icy-net-SocketAdapter.md#socketadapter) from all four socket signals. |
| `function` | [`swap`](https://auscaster.com/icey/docs/api-reference/icy-net-SocketEmitter.md#swap-11) `virtual` | Replaces the underlying socket with `socket`. |
| `function` | [`as`](https://auscaster.com/icey/docs/api-reference/icy-net-SocketEmitter.md#as) `inline` | Returns the underlying socket cast to type T, or nullptr if the cast fails. |
| `function` | [`operator->`](https://auscaster.com/icey/docs/api-reference/icy-net-SocketEmitter.md#operator-180) `const` `inline` | Returns a raw pointer to the underlying socket for direct method access. Follows shared_ptr semantics; the caller must not delete the returned pointer. |
| `function` | [`onSocketConnect`](https://auscaster.com/icey/docs/api-reference/icy-net-SocketEmitter.md#onsocketconnect-1) `virtual` `override` | Forwards the connect event to chained adapters, then fires the Connect signal. |
| `function` | [`onSocketRecv`](https://auscaster.com/icey/docs/api-reference/icy-net-SocketEmitter.md#onsocketrecv-2) `virtual` `override` | Forwards the recv event to chained adapters, then fires the Recv signal. |
| `function` | [`onSocketError`](https://auscaster.com/icey/docs/api-reference/icy-net-SocketEmitter.md#onsocketerror-1) `virtual` `override` | Forwards the error event to chained adapters, then fires the [Error](https://auscaster.com/icey/docs/api-reference/icy-Error.md#error) signal. |
| `function` | [`onSocketClose`](https://auscaster.com/icey/docs/api-reference/icy-net-SocketEmitter.md#onsocketclose-1) `virtual` `override` | Forwards the close event to chained adapters, then fires the Close signal. |

## 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 |
|------|-------------|
| [`icy::IntrusivePtr`](#icy-intrusiveptr-1)  |  |

---

<a id="icy-intrusiveptr-1"></a>

### icy::IntrusivePtr

```cpp
template<typename U> friend class icy::IntrusivePtr
```

[Defined in src/stun/include/icy/stun/transaction.h:57](https://github.com/auscaster/icey/blob/main/src/stun/include/icy/stun/transaction.h#L57)

## Public Methods

| Return | Name | Description |
|--------|------|-------------|
|  | [`Transaction`](#transaction-4)  | Constructs a STUN transaction bound to a specific socket and peer. |
| `bool` | [`checkResponse`](#checkresponse-2) `override` | Checks that `message` is a valid response for the pending request. In addition to the base class check, verifies that the transaction IDs match. |
| `void` | [`onResponse`](#onresponse-2) `virtual` `override` | Called when a valid response is received. Infers the response class (SuccessResponse, ErrorResponse, or Indication) from the response attributes and delegates to the base class handler. |

---

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

### Transaction

```cpp
Transaction(const net::Socket::Ptr & socket, const net::Address & peerAddress, long timeout = 10000, int retries = 1)
```

[Defined in src/stun/include/icy/stun/transaction.h:41](https://github.com/auscaster/icey/blob/main/src/stun/include/icy/stun/transaction.h#L41)

Constructs a STUN transaction bound to a specific socket and peer.

#### Parameters

| Parameter | Type | Description |
|-----------|------|-------------|
| `socket` | const [`net::Socket::Ptr`](https://auscaster.com/icey/docs/api-reference/icy-net-Socket.md#ptr-9) & | Socket used to send the request and receive the response. |
| `peerAddress` | const [`net::Address`](https://auscaster.com/icey/docs/api-reference/icy-net-Address.md#address) & | Remote address of the STUN/TURN server. |
| `timeout` | `long` | Response timeout in milliseconds (default 10 s). |
| `retries` | `int` | Number of send retries before declaring failure (default 1). |

---

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

### checkResponse

`override`

```cpp
bool checkResponse(const Message & message) override
```

[Defined in src/stun/include/icy/stun/transaction.h:48](https://github.com/auscaster/icey/blob/main/src/stun/include/icy/stun/transaction.h#L48)

Checks that `message` is a valid response for the pending request. In addition to the base class check, verifies that the transaction IDs match. 
#### Returns
true if `message` is the expected response.

#### Parameters

| Parameter | Type | Description |
|-----------|------|-------------|
| `message` | const [`Message`](https://auscaster.com/icey/docs/api-reference/icy-stun-Message.md#message-6) & | Incoming STUN message to evaluate. |

---

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

### onResponse

`virtual` `override`

```cpp
virtual void onResponse() override
```

[Defined in src/stun/include/icy/stun/transaction.h:53](https://github.com/auscaster/icey/blob/main/src/stun/include/icy/stun/transaction.h#L53)

Called when a valid response is received. Infers the response class (SuccessResponse, ErrorResponse, or Indication) from the response attributes and delegates to the base class handler.

#### Reimplements

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

## Protected Methods

| Return | Name | Description |
|--------|------|-------------|
|  | [`~Transaction`](#transaction-5) `virtual` |  |

---

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

### ~Transaction

`virtual`

```cpp
virtual ~Transaction()
```

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

#### Reimplements

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

## Public Types

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

---

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

### Ptr

```cpp
using Ptr = IntrusivePtr< Transaction >
```

Type: [`IntrusivePtr`](https://auscaster.com/icey/docs/api-reference/icy-IntrusivePtr.md#intrusiveptr)< [`Transaction`](#transaction-3) >

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