# Request

<a id="request-14"></a>

# Request

```cpp
#include <icy/turn/types.h>

class Request
```

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

> **Inherits:** [`Message`](https://auscaster.com/icey/docs/api-reference/icy-stun-Message.md#message-6)

A STUN message annotated with the transport type and source/destination addresses needed for server-side routing and response generation.

## List of all members

| Name | Kind | Owner |
|------|------|-------|
| [`transport`](#transport-6) | `variable` | Declared here |
| [`localAddress`](#localaddress) | `variable` | Declared here |
| [`remoteAddress`](#remoteaddress) | `variable` | Declared here |
| [`hash`](#hash) | `variable` | Declared here |
| [`Request`](#request-15) | `function` | Declared here |
| [`Request`](#request-16) | `function` | Declared here |
| [`Message`](https://auscaster.com/icey/docs/api-reference/icy-stun-Message.md#message-7) | `function` | Inherited from [`Message`](https://auscaster.com/icey/docs/api-reference/icy-stun-Message.md#message-6) |
| [`Message`](https://auscaster.com/icey/docs/api-reference/icy-stun-Message.md#message-8) | `function` | Inherited from [`Message`](https://auscaster.com/icey/docs/api-reference/icy-stun-Message.md#message-6) |
| [`Message`](https://auscaster.com/icey/docs/api-reference/icy-stun-Message.md#message-9) | `function` | Inherited from [`Message`](https://auscaster.com/icey/docs/api-reference/icy-stun-Message.md#message-6) |
| [`Message`](https://auscaster.com/icey/docs/api-reference/icy-stun-Message.md#message-10) | `function` | Inherited from [`Message`](https://auscaster.com/icey/docs/api-reference/icy-stun-Message.md#message-6) |
| [`operator=`](https://auscaster.com/icey/docs/api-reference/icy-stun-Message.md#operator-232) | `function` | Inherited from [`Message`](https://auscaster.com/icey/docs/api-reference/icy-stun-Message.md#message-6) |
| [`operator=`](https://auscaster.com/icey/docs/api-reference/icy-stun-Message.md#operator-233) | `function` | Inherited from [`Message`](https://auscaster.com/icey/docs/api-reference/icy-stun-Message.md#message-6) |
| [`~Message`](https://auscaster.com/icey/docs/api-reference/icy-stun-Message.md#message-11) | `function` | Inherited from [`Message`](https://auscaster.com/icey/docs/api-reference/icy-stun-Message.md#message-6) |
| [`clone`](https://auscaster.com/icey/docs/api-reference/icy-stun-Message.md#clone-15) | `function` | Inherited from [`Message`](https://auscaster.com/icey/docs/api-reference/icy-stun-Message.md#message-6) |
| [`setClass`](https://auscaster.com/icey/docs/api-reference/icy-stun-Message.md#setclass) | `function` | Inherited from [`Message`](https://auscaster.com/icey/docs/api-reference/icy-stun-Message.md#message-6) |
| [`setMethod`](https://auscaster.com/icey/docs/api-reference/icy-stun-Message.md#setmethod-1) | `function` | Inherited from [`Message`](https://auscaster.com/icey/docs/api-reference/icy-stun-Message.md#message-6) |
| [`setTransactionID`](https://auscaster.com/icey/docs/api-reference/icy-stun-Message.md#settransactionid) | `function` | Inherited from [`Message`](https://auscaster.com/icey/docs/api-reference/icy-stun-Message.md#message-6) |
| [`classType`](https://auscaster.com/icey/docs/api-reference/icy-stun-Message.md#classtype) | `function` | Inherited from [`Message`](https://auscaster.com/icey/docs/api-reference/icy-stun-Message.md#message-6) |
| [`methodType`](https://auscaster.com/icey/docs/api-reference/icy-stun-Message.md#methodtype) | `function` | Inherited from [`Message`](https://auscaster.com/icey/docs/api-reference/icy-stun-Message.md#message-6) |
| [`transactionID`](https://auscaster.com/icey/docs/api-reference/icy-stun-Message.md#transactionid-2) | `function` | Inherited from [`Message`](https://auscaster.com/icey/docs/api-reference/icy-stun-Message.md#message-6) |
| [`size`](https://auscaster.com/icey/docs/api-reference/icy-stun-Message.md#size-14) | `function` | Inherited from [`Message`](https://auscaster.com/icey/docs/api-reference/icy-stun-Message.md#message-6) |
| [`methodString`](https://auscaster.com/icey/docs/api-reference/icy-stun-Message.md#methodstring) | `function` | Inherited from [`Message`](https://auscaster.com/icey/docs/api-reference/icy-stun-Message.md#message-6) |
| [`classString`](https://auscaster.com/icey/docs/api-reference/icy-stun-Message.md#classstring) | `function` | Inherited from [`Message`](https://auscaster.com/icey/docs/api-reference/icy-stun-Message.md#message-6) |
| [`errorString`](https://auscaster.com/icey/docs/api-reference/icy-stun-Message.md#errorstring) | `function` | Inherited from [`Message`](https://auscaster.com/icey/docs/api-reference/icy-stun-Message.md#message-6) |
| [`add`](https://auscaster.com/icey/docs/api-reference/icy-stun-Message.md#add-9) | `function` | Inherited from [`Message`](https://auscaster.com/icey/docs/api-reference/icy-stun-Message.md#message-6) |
| [`add`](https://auscaster.com/icey/docs/api-reference/icy-stun-Message.md#add-10) | `function` | Inherited from [`Message`](https://auscaster.com/icey/docs/api-reference/icy-stun-Message.md#message-6) |
| [`get`](https://auscaster.com/icey/docs/api-reference/icy-stun-Message.md#get-18) | `function` | Inherited from [`Message`](https://auscaster.com/icey/docs/api-reference/icy-stun-Message.md#message-6) |
| [`get`](https://auscaster.com/icey/docs/api-reference/icy-stun-Message.md#get-19) | `function` | Inherited from [`Message`](https://auscaster.com/icey/docs/api-reference/icy-stun-Message.md#message-6) |
| [`read`](https://auscaster.com/icey/docs/api-reference/icy-stun-Message.md#read-10) | `function` | Inherited from [`Message`](https://auscaster.com/icey/docs/api-reference/icy-stun-Message.md#message-6) |
| [`write`](https://auscaster.com/icey/docs/api-reference/icy-stun-Message.md#write-39) | `function` | Inherited from [`Message`](https://auscaster.com/icey/docs/api-reference/icy-stun-Message.md#message-6) |
| [`toString`](https://auscaster.com/icey/docs/api-reference/icy-stun-Message.md#tostring-11) | `function` | Inherited from [`Message`](https://auscaster.com/icey/docs/api-reference/icy-stun-Message.md#message-6) |
| [`print`](https://auscaster.com/icey/docs/api-reference/icy-stun-Message.md#print-15) | `function` | Inherited from [`Message`](https://auscaster.com/icey/docs/api-reference/icy-stun-Message.md#message-6) |
| [`className`](https://auscaster.com/icey/docs/api-reference/icy-stun-Message.md#classname-12) | `function` | Inherited from [`Message`](https://auscaster.com/icey/docs/api-reference/icy-stun-Message.md#message-6) |
| [`_class`](https://auscaster.com/icey/docs/api-reference/icy-stun-Message.md#_class-1) | `variable` | Inherited from [`Message`](https://auscaster.com/icey/docs/api-reference/icy-stun-Message.md#message-6) |
| [`_method`](https://auscaster.com/icey/docs/api-reference/icy-stun-Message.md#_method-1) | `variable` | Inherited from [`Message`](https://auscaster.com/icey/docs/api-reference/icy-stun-Message.md#message-6) |
| [`_size`](https://auscaster.com/icey/docs/api-reference/icy-stun-Message.md#_size-4) | `variable` | Inherited from [`Message`](https://auscaster.com/icey/docs/api-reference/icy-stun-Message.md#message-6) |
| [`_transactionID`](https://auscaster.com/icey/docs/api-reference/icy-stun-Message.md#_transactionid) | `variable` | Inherited from [`Message`](https://auscaster.com/icey/docs/api-reference/icy-stun-Message.md#message-6) |
| [`_attrs`](https://auscaster.com/icey/docs/api-reference/icy-stun-Message.md#_attrs) | `variable` | Inherited from [`Message`](https://auscaster.com/icey/docs/api-reference/icy-stun-Message.md#message-6) |
| [`MethodType`](https://auscaster.com/icey/docs/api-reference/icy-stun-Message.md#methodtype-1) | `enum` | Inherited from [`Message`](https://auscaster.com/icey/docs/api-reference/icy-stun-Message.md#message-6) |
| [`ClassType`](https://auscaster.com/icey/docs/api-reference/icy-stun-Message.md#classtype-1) | `enum` | Inherited from [`Message`](https://auscaster.com/icey/docs/api-reference/icy-stun-Message.md#message-6) |
| [`ErrorCodes`](https://auscaster.com/icey/docs/api-reference/icy-stun-Message.md#errorcodes) | `enum` | Inherited from [`Message`](https://auscaster.com/icey/docs/api-reference/icy-stun-Message.md#message-6) |
| [`computeBodySize`](https://auscaster.com/icey/docs/api-reference/icy-stun-Message.md#computebodysize) | `function` | Inherited from [`Message`](https://auscaster.com/icey/docs/api-reference/icy-stun-Message.md#message-6) |
| [`operator<<`](https://auscaster.com/icey/docs/api-reference/icy-IPacket.md#operator-41) | `friend` | Inherited from [`IPacket`](https://auscaster.com/icey/docs/api-reference/icy-IPacket.md#ipacket) |
| [`opaque`](https://auscaster.com/icey/docs/api-reference/icy-IPacket.md#opaque) | `variable` | Inherited from [`IPacket`](https://auscaster.com/icey/docs/api-reference/icy-IPacket.md#ipacket) |
| [`info`](https://auscaster.com/icey/docs/api-reference/icy-IPacket.md#info) | `variable` | Inherited from [`IPacket`](https://auscaster.com/icey/docs/api-reference/icy-IPacket.md#ipacket) |
| [`flags`](https://auscaster.com/icey/docs/api-reference/icy-IPacket.md#flags) | `variable` | Inherited from [`IPacket`](https://auscaster.com/icey/docs/api-reference/icy-IPacket.md#ipacket) |
| [`IPacket`](https://auscaster.com/icey/docs/api-reference/icy-IPacket.md#ipacket-1) | `function` | Inherited from [`IPacket`](https://auscaster.com/icey/docs/api-reference/icy-IPacket.md#ipacket) |
| [`IPacket`](https://auscaster.com/icey/docs/api-reference/icy-IPacket.md#ipacket-2) | `function` | Inherited from [`IPacket`](https://auscaster.com/icey/docs/api-reference/icy-IPacket.md#ipacket) |
| [`operator=`](https://auscaster.com/icey/docs/api-reference/icy-IPacket.md#operator-42) | `function` | Inherited from [`IPacket`](https://auscaster.com/icey/docs/api-reference/icy-IPacket.md#ipacket) |
| [`clone`](https://auscaster.com/icey/docs/api-reference/icy-IPacket.md#clone-1) | `function` | Inherited from [`IPacket`](https://auscaster.com/icey/docs/api-reference/icy-IPacket.md#ipacket) |
| [`~IPacket`](https://auscaster.com/icey/docs/api-reference/icy-IPacket.md#ipacket-3) | `function` | Inherited from [`IPacket`](https://auscaster.com/icey/docs/api-reference/icy-IPacket.md#ipacket) |
| [`read`](https://auscaster.com/icey/docs/api-reference/icy-IPacket.md#read-1) | `function` | Inherited from [`IPacket`](https://auscaster.com/icey/docs/api-reference/icy-IPacket.md#ipacket) |
| [`write`](https://auscaster.com/icey/docs/api-reference/icy-IPacket.md#write-4) | `function` | Inherited from [`IPacket`](https://auscaster.com/icey/docs/api-reference/icy-IPacket.md#ipacket) |
| [`size`](https://auscaster.com/icey/docs/api-reference/icy-IPacket.md#size-1) | `function` | Inherited from [`IPacket`](https://auscaster.com/icey/docs/api-reference/icy-IPacket.md#ipacket) |
| [`hasData`](https://auscaster.com/icey/docs/api-reference/icy-IPacket.md#hasdata) | `function` | Inherited from [`IPacket`](https://auscaster.com/icey/docs/api-reference/icy-IPacket.md#ipacket) |
| [`data`](https://auscaster.com/icey/docs/api-reference/icy-IPacket.md#data-2) | `function` | Inherited from [`IPacket`](https://auscaster.com/icey/docs/api-reference/icy-IPacket.md#ipacket) |
| [`constData`](https://auscaster.com/icey/docs/api-reference/icy-IPacket.md#constdata) | `function` | Inherited from [`IPacket`](https://auscaster.com/icey/docs/api-reference/icy-IPacket.md#ipacket) |
| [`className`](https://auscaster.com/icey/docs/api-reference/icy-IPacket.md#classname-1) | `function` | Inherited from [`IPacket`](https://auscaster.com/icey/docs/api-reference/icy-IPacket.md#ipacket) |
| [`print`](https://auscaster.com/icey/docs/api-reference/icy-IPacket.md#print) | `function` | Inherited from [`IPacket`](https://auscaster.com/icey/docs/api-reference/icy-IPacket.md#ipacket) |

## Inherited from [`Message`](https://auscaster.com/icey/docs/api-reference/icy-stun-Message.md#message-6)

| Kind | Name | Description |
|------|------|-------------|
| `function` | [`Message`](https://auscaster.com/icey/docs/api-reference/icy-stun-Message.md#message-7)  | Constructs a default message (Request class, Undefined method) with a randomly generated 12-byte transaction ID. |
| `function` | [`Message`](https://auscaster.com/icey/docs/api-reference/icy-stun-Message.md#message-8)  | Constructs a message with explicit class and method. |
| `function` | [`Message`](https://auscaster.com/icey/docs/api-reference/icy-stun-Message.md#message-9)  | Deep-copy constructor; clones all attributes. |
| `function` | [`Message`](https://auscaster.com/icey/docs/api-reference/icy-stun-Message.md#message-10) `noexcept` | Move constructor. |
| `function` | [`operator=`](https://auscaster.com/icey/docs/api-reference/icy-stun-Message.md#operator-232)  | Deep-copy assignment; clones all attributes from `that`. |
| `function` | [`operator=`](https://auscaster.com/icey/docs/api-reference/icy-stun-Message.md#operator-233) `noexcept` | Move assignment. |
| `function` | [`~Message`](https://auscaster.com/icey/docs/api-reference/icy-stun-Message.md#message-11) `virtual` |  |
| `function` | [`clone`](https://auscaster.com/icey/docs/api-reference/icy-stun-Message.md#clone-15) `virtual` `const` `override` |  |
| `function` | [`setClass`](https://auscaster.com/icey/docs/api-reference/icy-stun-Message.md#setclass)  | Sets the message class field. |
| `function` | [`setMethod`](https://auscaster.com/icey/docs/api-reference/icy-stun-Message.md#setmethod-1)  | Sets the message method field. |
| `function` | [`setTransactionID`](https://auscaster.com/icey/docs/api-reference/icy-stun-Message.md#settransactionid)  | Sets the 12-byte transaction ID. |
| `function` | [`classType`](https://auscaster.com/icey/docs/api-reference/icy-stun-Message.md#classtype) `const` |  |
| `function` | [`methodType`](https://auscaster.com/icey/docs/api-reference/icy-stun-Message.md#methodtype) `const` |  |
| `function` | [`transactionID`](https://auscaster.com/icey/docs/api-reference/icy-stun-Message.md#transactionid-2) `const` |  |
| `function` | [`size`](https://auscaster.com/icey/docs/api-reference/icy-stun-Message.md#size-14) `virtual` `const` `inline` `override` |  |
| `function` | [`methodString`](https://auscaster.com/icey/docs/api-reference/icy-stun-Message.md#methodstring) `const` |  |
| `function` | [`classString`](https://auscaster.com/icey/docs/api-reference/icy-stun-Message.md#classstring) `const` |  |
| `function` | [`errorString`](https://auscaster.com/icey/docs/api-reference/icy-stun-Message.md#errorstring) `const` | Maps a numeric error code to its canonical string description. |
| `function` | [`add`](https://auscaster.com/icey/docs/api-reference/icy-stun-Message.md#add-9) `inline` | Constructs an attribute of type T in-place and appends it to the message. Returns a reference to the new attribute for further configuration. |
| `function` | [`add`](https://auscaster.com/icey/docs/api-reference/icy-stun-Message.md#add-10)  | Appends an attribute to the message, taking ownership via unique_ptr. |
| `function` | [`get`](https://auscaster.com/icey/docs/api-reference/icy-stun-Message.md#get-18) `const` | Returns the Nth attribute of the given type, or nullptr if not found. |
| `function` | [`get`](https://auscaster.com/icey/docs/api-reference/icy-stun-Message.md#get-19) `const` `inline` | Type-safe attribute accessor using the concrete attribute's TypeID. |
| `function` | [`read`](https://auscaster.com/icey/docs/api-reference/icy-stun-Message.md#read-10) `virtual` `override` | Parses a STUN/TURN packet from the given buffer. |
| `function` | [`write`](https://auscaster.com/icey/docs/api-reference/icy-stun-Message.md#write-39) `virtual` `const` `override` | Serialises this message into a STUN/TURN wire-format packet. |
| `function` | [`toString`](https://auscaster.com/icey/docs/api-reference/icy-stun-Message.md#tostring-11) `const` |  |
| `function` | [`print`](https://auscaster.com/icey/docs/api-reference/icy-stun-Message.md#print-15) `virtual` `const` `override` | Writes the same representation as [toString()](https://auscaster.com/icey/docs/api-reference/icy-stun-Message.md#tostring-11) to the given stream. |
| `function` | [`className`](https://auscaster.com/icey/docs/api-reference/icy-stun-Message.md#classname-12) `virtual` `const` `inline` `override` | Returns the class name of this packet type for logging and diagnostics. |
| `variable` | [`_class`](https://auscaster.com/icey/docs/api-reference/icy-stun-Message.md#_class-1)  |  |
| `variable` | [`_method`](https://auscaster.com/icey/docs/api-reference/icy-stun-Message.md#_method-1)  |  |
| `variable` | [`_size`](https://auscaster.com/icey/docs/api-reference/icy-stun-Message.md#_size-4)  | Set by [read()](https://auscaster.com/icey/docs/api-reference/icy-stun-Message.md#read-10); [write()](https://auscaster.com/icey/docs/api-reference/icy-stun-Message.md#write-39) uses computeBodySize() instead |
| `variable` | [`_transactionID`](https://auscaster.com/icey/docs/api-reference/icy-stun-Message.md#_transactionid)  | Empty until first use; see [transactionID()](https://auscaster.com/icey/docs/api-reference/icy-stun-Message.md#transactionid-2). Mutable for lazy generation from the const accessor. |
| `variable` | [`_attrs`](https://auscaster.com/icey/docs/api-reference/icy-stun-Message.md#_attrs)  |  |
| `enum` | [`MethodType`](https://auscaster.com/icey/docs/api-reference/icy-stun-Message.md#methodtype-1)  |  |
| `enum` | [`ClassType`](https://auscaster.com/icey/docs/api-reference/icy-stun-Message.md#classtype-1)  |  |
| `enum` | [`ErrorCodes`](https://auscaster.com/icey/docs/api-reference/icy-stun-Message.md#errorcodes)  |  |
| `function` | [`computeBodySize`](https://auscaster.com/icey/docs/api-reference/icy-stun-Message.md#computebodysize) `const` | Computes the wire body size from the current attribute list. |

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

| Kind | Name | Description |
|------|------|-------------|
| `friend` | [`operator<<`](https://auscaster.com/icey/docs/api-reference/icy-IPacket.md#operator-41) `inline` | [Stream](https://auscaster.com/icey/docs/api-reference/icy-Stream.md#stream) insertion operator; delegates to [print()](https://auscaster.com/icey/docs/api-reference/icy-IPacket.md#print). |
| `variable` | [`opaque`](https://auscaster.com/icey/docs/api-reference/icy-IPacket.md#opaque)  | Optional type-safe context data. Use std::any_cast to retrieve. Lifetime of the stored value is tied to the packet's lifetime. |
| `variable` | [`info`](https://auscaster.com/icey/docs/api-reference/icy-IPacket.md#info)  | Optional extra information about the packet. |
| `variable` | [`flags`](https://auscaster.com/icey/docs/api-reference/icy-IPacket.md#flags)  | Provides basic information about the packet. |
| `function` | [`IPacket`](https://auscaster.com/icey/docs/api-reference/icy-IPacket.md#ipacket-1) `inline` |  |
| `function` | [`IPacket`](https://auscaster.com/icey/docs/api-reference/icy-IPacket.md#ipacket-2) `inline` | Copy constructor; clones the info object if present. |
| `function` | [`operator=`](https://auscaster.com/icey/docs/api-reference/icy-IPacket.md#operator-42) `inline` | Copy assignment; clones the info object if present. |
| `function` | [`clone`](https://auscaster.com/icey/docs/api-reference/icy-IPacket.md#clone-1) `virtual` `const` | Returns a heap-allocated deep copy of this packet. |
| `function` | [`~IPacket`](https://auscaster.com/icey/docs/api-reference/icy-IPacket.md#ipacket-3) `virtual` | Defaulted destructor. |
| `function` | [`read`](https://auscaster.com/icey/docs/api-reference/icy-IPacket.md#read-1) `virtual` | Read/parse to the packet from the given input buffer. The number of bytes read is returned. |
| `function` | [`write`](https://auscaster.com/icey/docs/api-reference/icy-IPacket.md#write-4) `virtual` `const` | Copy/generate to the packet given output buffer. The number of bytes written can be obtained from the buffer. |
| `function` | [`size`](https://auscaster.com/icey/docs/api-reference/icy-IPacket.md#size-1) `virtual` `const` `inline` | The size of the packet in bytes. |
| `function` | [`hasData`](https://auscaster.com/icey/docs/api-reference/icy-IPacket.md#hasdata) `virtual` `const` `inline` | Returns true if the packet has a non-null data pointer. |
| `function` | [`data`](https://auscaster.com/icey/docs/api-reference/icy-IPacket.md#data-2) `virtual` `const` `inline` | The packet data pointer for buffered packets. |
| `function` | [`constData`](https://auscaster.com/icey/docs/api-reference/icy-IPacket.md#constdata) `virtual` `const` `inline` | The const packet data pointer for buffered packets. |
| `function` | [`className`](https://auscaster.com/icey/docs/api-reference/icy-IPacket.md#classname-1) `virtual` `const` | Returns the class name of this packet type for logging and diagnostics. |
| `function` | [`print`](https://auscaster.com/icey/docs/api-reference/icy-IPacket.md#print) `virtual` `const` `inline` | Prints a human-readable representation to the given stream. |

## Public Attributes

| Return | Name | Description |
|--------|------|-------------|
| [`net::TransportType`](https://auscaster.com/icey/docs/api-reference/icy-net.md#transporttype) | [`transport`](#transport-6)  | Protocol on which the request arrived (UDP or TCP). |
| [`net::Address`](https://auscaster.com/icey/docs/api-reference/icy-net-Address.md#address) | [`localAddress`](#localaddress)  | [Server](https://auscaster.com/icey/docs/api-reference/icy-turn-Server.md#server-7)'s local address that received the request. |
| [`net::Address`](https://auscaster.com/icey/docs/api-reference/icy-net-Address.md#address) | [`remoteAddress`](#remoteaddress)  | [Client](https://auscaster.com/icey/docs/api-reference/icy-turn-Client.md#client-3)'s remote address (used to build the 5-tuple). |
| `std::string` | [`hash`](#hash)  | Pre-computed MessageIntegrity key for signing responses. |

---

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

### transport

```cpp
net::TransportType transport
```

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

[Defined in src/turn/include/icy/turn/types.h:64](https://github.com/auscaster/icey/blob/main/src/turn/include/icy/turn/types.h#L64)

Protocol on which the request arrived (UDP or TCP).

---

<a id="localaddress"></a>

### localAddress

```cpp
net::Address localAddress
```

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

[Defined in src/turn/include/icy/turn/types.h:65](https://github.com/auscaster/icey/blob/main/src/turn/include/icy/turn/types.h#L65)

[Server](https://auscaster.com/icey/docs/api-reference/icy-turn-Server.md#server-7)'s local address that received the request.

---

<a id="remoteaddress"></a>

### remoteAddress

```cpp
net::Address remoteAddress
```

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

[Defined in src/turn/include/icy/turn/types.h:66](https://github.com/auscaster/icey/blob/main/src/turn/include/icy/turn/types.h#L66)

[Client](https://auscaster.com/icey/docs/api-reference/icy-turn-Client.md#client-3)'s remote address (used to build the 5-tuple).

---

<a id="hash"></a>

### hash

```cpp
std::string hash
```

[Defined in src/turn/include/icy/turn/types.h:67](https://github.com/auscaster/icey/blob/main/src/turn/include/icy/turn/types.h#L67)

Pre-computed MessageIntegrity key for signing responses.

## Public Methods

| Return | Name | Description |
|--------|------|-------------|
|  | [`Request`](#request-15) `inline` | Constructs a [Request](#request-14) by copying a parsed STUN message and annotating it with the transport context. |
|  | [`Request`](#request-16) `inline` | Move overload for server parse loops: adopts the parsed message (including any Data payload) instead of deep-copying every attribute. |

---

<a id="request-15"></a>

### Request

`inline`

```cpp
inline Request(const stun::Message & message, net::TransportType transport, const net::Address & localAddress = net::Address(), const net::Address & remoteAddress = net::Address())
```

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

Constructs a [Request](#request-14) by copying a parsed STUN message and annotating it with the transport context.

#### Parameters

| Parameter | Type | Description |
|-----------|------|-------------|
| `message` | const [`stun::Message`](https://auscaster.com/icey/docs/api-reference/icy-stun-Message.md#message-6) & | Parsed STUN message. |
| `transport` | [`net::TransportType`](https://auscaster.com/icey/docs/api-reference/icy-net.md#transporttype) | Transport protocol on which the message arrived. |
| `localAddress` | const [`net::Address`](https://auscaster.com/icey/docs/api-reference/icy-net-Address.md#address) & | Server-side local address. |
| `remoteAddress` | const [`net::Address`](https://auscaster.com/icey/docs/api-reference/icy-net-Address.md#address) & | Client-side remote address. |

---

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

### Request

`inline`

```cpp
inline Request(stun::Message && message, net::TransportType transport, const net::Address & localAddress = net::Address(), const net::Address & remoteAddress = net::Address())
```

[Defined in src/turn/include/icy/turn/types.h:91](https://github.com/auscaster/icey/blob/main/src/turn/include/icy/turn/types.h#L91)

Move overload for server parse loops: adopts the parsed message (including any Data payload) instead of deep-copying every attribute.

#### Parameters

| Parameter | Type | Description |
|-----------|------|-------------|
| `message` | [`stun::Message`](https://auscaster.com/icey/docs/api-reference/icy-stun-Message.md#message-6) && | Parsed STUN message; left in a reusable state. |
| `transport` | [`net::TransportType`](https://auscaster.com/icey/docs/api-reference/icy-net.md#transporttype) | Transport protocol on which the message arrived. |
| `localAddress` | const [`net::Address`](https://auscaster.com/icey/docs/api-reference/icy-net-Address.md#address) & | Server-side local address. |
| `remoteAddress` | const [`net::Address`](https://auscaster.com/icey/docs/api-reference/icy-net-Address.md#address) & | Client-side remote address. |
