# Presence

<a id="presence"></a>

# Presence

```cpp
#include <icy/symple/presence.h>

class Presence
```

[Defined in src/symple/include/icy/symple/presence.h:27](https://github.com/auscaster/icey/blob/main/src/symple/include/icy/symple/presence.h#L27)

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

Symple presence message indicating a peer's online status.

[Presence](#presence) messages carry peer data in the `data` field. When `probe` is true the recipient should respond with their own presence.

## List of all members

| Name | Kind | Owner |
|------|------|-------|
| [`Presence`](#presence-1) | `function` | Declared here |
| [`Presence`](#presence-2) | `function` | Declared here |
| [`Presence`](#presence-3) | `function` | Declared here |
| [`~Presence`](#presence-4) | `function` | Declared here |
| [`isProbe`](#isprobe) | `function` | Declared here |
| [`setProbe`](#setprobe) | `function` | Declared here |
| [`Message`](https://auscaster.com/icey/docs/api-reference/icy-smpl-Message.md#message-13) | `function` | Inherited from [`Message`](https://auscaster.com/icey/docs/api-reference/icy-smpl-Message.md#message-12) |
| [`Message`](https://auscaster.com/icey/docs/api-reference/icy-smpl-Message.md#message-14) | `function` | Inherited from [`Message`](https://auscaster.com/icey/docs/api-reference/icy-smpl-Message.md#message-12) |
| [`Message`](https://auscaster.com/icey/docs/api-reference/icy-smpl-Message.md#message-15) | `function` | Inherited from [`Message`](https://auscaster.com/icey/docs/api-reference/icy-smpl-Message.md#message-12) |
| [`operator=`](https://auscaster.com/icey/docs/api-reference/icy-smpl-Message.md#operator-247) | `function` | Inherited from [`Message`](https://auscaster.com/icey/docs/api-reference/icy-smpl-Message.md#message-12) |
| [`~Message`](https://auscaster.com/icey/docs/api-reference/icy-smpl-Message.md#message-16) | `function` | Inherited from [`Message`](https://auscaster.com/icey/docs/api-reference/icy-smpl-Message.md#message-12) |
| [`clone`](https://auscaster.com/icey/docs/api-reference/icy-smpl-Message.md#clone-22) | `function` | Inherited from [`Message`](https://auscaster.com/icey/docs/api-reference/icy-smpl-Message.md#message-12) |
| [`valid`](https://auscaster.com/icey/docs/api-reference/icy-smpl-Message.md#valid-15) | `function` | Inherited from [`Message`](https://auscaster.com/icey/docs/api-reference/icy-smpl-Message.md#message-12) |
| [`clear`](https://auscaster.com/icey/docs/api-reference/icy-smpl-Message.md#clear-11) | `function` | Inherited from [`Message`](https://auscaster.com/icey/docs/api-reference/icy-smpl-Message.md#message-12) |
| [`clearData`](https://auscaster.com/icey/docs/api-reference/icy-smpl-Message.md#cleardata) | `function` | Inherited from [`Message`](https://auscaster.com/icey/docs/api-reference/icy-smpl-Message.md#message-12) |
| [`clearNotes`](https://auscaster.com/icey/docs/api-reference/icy-smpl-Message.md#clearnotes) | `function` | Inherited from [`Message`](https://auscaster.com/icey/docs/api-reference/icy-smpl-Message.md#message-12) |
| [`type`](https://auscaster.com/icey/docs/api-reference/icy-smpl-Message.md#type-25) | `function` | Inherited from [`Message`](https://auscaster.com/icey/docs/api-reference/icy-smpl-Message.md#message-12) |
| [`id`](https://auscaster.com/icey/docs/api-reference/icy-smpl-Message.md#id-12) | `function` | Inherited from [`Message`](https://auscaster.com/icey/docs/api-reference/icy-smpl-Message.md#message-12) |
| [`to`](https://auscaster.com/icey/docs/api-reference/icy-smpl-Message.md#to) | `function` | Inherited from [`Message`](https://auscaster.com/icey/docs/api-reference/icy-smpl-Message.md#message-12) |
| [`from`](https://auscaster.com/icey/docs/api-reference/icy-smpl-Message.md#from) | `function` | Inherited from [`Message`](https://auscaster.com/icey/docs/api-reference/icy-smpl-Message.md#message-12) |
| [`toUser`](https://auscaster.com/icey/docs/api-reference/icy-smpl-Message.md#touser) | `function` | Inherited from [`Message`](https://auscaster.com/icey/docs/api-reference/icy-smpl-Message.md#message-12) |
| [`toId`](https://auscaster.com/icey/docs/api-reference/icy-smpl-Message.md#toid) | `function` | Inherited from [`Message`](https://auscaster.com/icey/docs/api-reference/icy-smpl-Message.md#message-12) |
| [`fromUser`](https://auscaster.com/icey/docs/api-reference/icy-smpl-Message.md#fromuser) | `function` | Inherited from [`Message`](https://auscaster.com/icey/docs/api-reference/icy-smpl-Message.md#message-12) |
| [`fromId`](https://auscaster.com/icey/docs/api-reference/icy-smpl-Message.md#fromid) | `function` | Inherited from [`Message`](https://auscaster.com/icey/docs/api-reference/icy-smpl-Message.md#message-12) |
| [`status`](https://auscaster.com/icey/docs/api-reference/icy-smpl-Message.md#status-3) | `function` | Inherited from [`Message`](https://auscaster.com/icey/docs/api-reference/icy-smpl-Message.md#message-12) |
| [`setType`](https://auscaster.com/icey/docs/api-reference/icy-smpl-Message.md#settype-2) | `function` | Inherited from [`Message`](https://auscaster.com/icey/docs/api-reference/icy-smpl-Message.md#message-12) |
| [`setTo`](https://auscaster.com/icey/docs/api-reference/icy-smpl-Message.md#setto) | `function` | Inherited from [`Message`](https://auscaster.com/icey/docs/api-reference/icy-smpl-Message.md#message-12) |
| [`setTo`](https://auscaster.com/icey/docs/api-reference/icy-smpl-Message.md#setto-1) | `function` | Inherited from [`Message`](https://auscaster.com/icey/docs/api-reference/icy-smpl-Message.md#message-12) |
| [`setTo`](https://auscaster.com/icey/docs/api-reference/icy-smpl-Message.md#setto-2) | `function` | Inherited from [`Message`](https://auscaster.com/icey/docs/api-reference/icy-smpl-Message.md#message-12) |
| [`setFrom`](https://auscaster.com/icey/docs/api-reference/icy-smpl-Message.md#setfrom) | `function` | Inherited from [`Message`](https://auscaster.com/icey/docs/api-reference/icy-smpl-Message.md#message-12) |
| [`setFrom`](https://auscaster.com/icey/docs/api-reference/icy-smpl-Message.md#setfrom-1) | `function` | Inherited from [`Message`](https://auscaster.com/icey/docs/api-reference/icy-smpl-Message.md#message-12) |
| [`setFrom`](https://auscaster.com/icey/docs/api-reference/icy-smpl-Message.md#setfrom-2) | `function` | Inherited from [`Message`](https://auscaster.com/icey/docs/api-reference/icy-smpl-Message.md#message-12) |
| [`setStatus`](https://auscaster.com/icey/docs/api-reference/icy-smpl-Message.md#setstatus-1) | `function` | Inherited from [`Message`](https://auscaster.com/icey/docs/api-reference/icy-smpl-Message.md#message-12) |
| [`notes`](https://auscaster.com/icey/docs/api-reference/icy-smpl-Message.md#notes) | `function` | Inherited from [`Message`](https://auscaster.com/icey/docs/api-reference/icy-smpl-Message.md#message-12) |
| [`setNote`](https://auscaster.com/icey/docs/api-reference/icy-smpl-Message.md#setnote) | `function` | Inherited from [`Message`](https://auscaster.com/icey/docs/api-reference/icy-smpl-Message.md#message-12) |
| [`addNote`](https://auscaster.com/icey/docs/api-reference/icy-smpl-Message.md#addnote) | `function` | Inherited from [`Message`](https://auscaster.com/icey/docs/api-reference/icy-smpl-Message.md#message-12) |
| [`data`](https://auscaster.com/icey/docs/api-reference/icy-smpl-Message.md#data-9) | `function` | Inherited from [`Message`](https://auscaster.com/icey/docs/api-reference/icy-smpl-Message.md#message-12) |
| [`data`](https://auscaster.com/icey/docs/api-reference/icy-smpl-Message.md#data-10) | `function` | Inherited from [`Message`](https://auscaster.com/icey/docs/api-reference/icy-smpl-Message.md#message-12) |
| [`setData`](https://auscaster.com/icey/docs/api-reference/icy-smpl-Message.md#setdata) | `function` | Inherited from [`Message`](https://auscaster.com/icey/docs/api-reference/icy-smpl-Message.md#message-12) |
| [`setData`](https://auscaster.com/icey/docs/api-reference/icy-smpl-Message.md#setdata-1) | `function` | Inherited from [`Message`](https://auscaster.com/icey/docs/api-reference/icy-smpl-Message.md#message-12) |
| [`setData`](https://auscaster.com/icey/docs/api-reference/icy-smpl-Message.md#setdata-2) | `function` | Inherited from [`Message`](https://auscaster.com/icey/docs/api-reference/icy-smpl-Message.md#message-12) |
| [`setData`](https://auscaster.com/icey/docs/api-reference/icy-smpl-Message.md#setdata-3) | `function` | Inherited from [`Message`](https://auscaster.com/icey/docs/api-reference/icy-smpl-Message.md#message-12) |
| [`setData`](https://auscaster.com/icey/docs/api-reference/icy-smpl-Message.md#setdata-4) | `function` | Inherited from [`Message`](https://auscaster.com/icey/docs/api-reference/icy-smpl-Message.md#message-12) |
| [`removeData`](https://auscaster.com/icey/docs/api-reference/icy-smpl-Message.md#removedata) | `function` | Inherited from [`Message`](https://auscaster.com/icey/docs/api-reference/icy-smpl-Message.md#message-12) |
| [`hasData`](https://auscaster.com/icey/docs/api-reference/icy-smpl-Message.md#hasdata-1) | `function` | Inherited from [`Message`](https://auscaster.com/icey/docs/api-reference/icy-smpl-Message.md#message-12) |
| [`read`](https://auscaster.com/icey/docs/api-reference/icy-smpl-Message.md#read-17) | `function` | Inherited from [`Message`](https://auscaster.com/icey/docs/api-reference/icy-smpl-Message.md#message-12) |
| [`read`](https://auscaster.com/icey/docs/api-reference/icy-smpl-Message.md#read-18) | `function` | Inherited from [`Message`](https://auscaster.com/icey/docs/api-reference/icy-smpl-Message.md#message-12) |
| [`write`](https://auscaster.com/icey/docs/api-reference/icy-smpl-Message.md#write-46) | `function` | Inherited from [`Message`](https://auscaster.com/icey/docs/api-reference/icy-smpl-Message.md#message-12) |
| [`isRequest`](https://auscaster.com/icey/docs/api-reference/icy-smpl-Message.md#isrequest) | `function` | Inherited from [`Message`](https://auscaster.com/icey/docs/api-reference/icy-smpl-Message.md#message-12) |
| [`size`](https://auscaster.com/icey/docs/api-reference/icy-smpl-Message.md#size-20) | `function` | Inherited from [`Message`](https://auscaster.com/icey/docs/api-reference/icy-smpl-Message.md#message-12) |
| [`print`](https://auscaster.com/icey/docs/api-reference/icy-smpl-Message.md#print-18) | `function` | Inherited from [`Message`](https://auscaster.com/icey/docs/api-reference/icy-smpl-Message.md#message-12) |
| [`className`](https://auscaster.com/icey/docs/api-reference/icy-smpl-Message.md#classname-13) | `function` | Inherited from [`Message`](https://auscaster.com/icey/docs/api-reference/icy-smpl-Message.md#message-12) |
| [`data`](https://auscaster.com/icey/docs/api-reference/icy-smpl-Message.md#data-11) | `function` | Inherited from [`Message`](https://auscaster.com/icey/docs/api-reference/icy-smpl-Message.md#message-12) |
| [`hasData`](https://auscaster.com/icey/docs/api-reference/icy-smpl-Message.md#hasdata-2) | `function` | Inherited from [`Message`](https://auscaster.com/icey/docs/api-reference/icy-smpl-Message.md#message-12) |
| [`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-smpl-Message.md#message-12)

| Kind | Name | Description |
|------|------|-------------|
| `function` | [`Message`](https://auscaster.com/icey/docs/api-reference/icy-smpl-Message.md#message-13)  | Constructs a new message with a random ID and type set to "message". |
| `function` | [`Message`](https://auscaster.com/icey/docs/api-reference/icy-smpl-Message.md#message-14)  | Constructs a message from a JSON value; sets missing id/type fields. |
| `function` | [`Message`](https://auscaster.com/icey/docs/api-reference/icy-smpl-Message.md#message-15)  | Copy constructor; preserves or generates id/type fields. |
| `function` | [`operator=`](https://auscaster.com/icey/docs/api-reference/icy-smpl-Message.md#operator-247)  | Defaulted assignment operator. |
| `function` | [`~Message`](https://auscaster.com/icey/docs/api-reference/icy-smpl-Message.md#message-16) `virtual` |  |
| `function` | [`clone`](https://auscaster.com/icey/docs/api-reference/icy-smpl-Message.md#clone-22) `virtual` `const` `override` | Returns a heap-allocated copy of this message. |
| `function` | [`valid`](https://auscaster.com/icey/docs/api-reference/icy-smpl-Message.md#valid-15) `virtual` `const` | Returns true if the message has both `type` and `id` fields. |
| `function` | [`clear`](https://auscaster.com/icey/docs/api-reference/icy-smpl-Message.md#clear-11) `virtual` | Clears all JSON fields from this message. |
| `function` | [`clearData`](https://auscaster.com/icey/docs/api-reference/icy-smpl-Message.md#cleardata) `virtual` | Clears the `data` sub-object. |
| `function` | [`clearNotes`](https://auscaster.com/icey/docs/api-reference/icy-smpl-Message.md#clearnotes) `virtual` | Clears the `notes` array. |
| `function` | [`type`](https://auscaster.com/icey/docs/api-reference/icy-smpl-Message.md#type-25) `const` | Returns the message type string (defaults to "message"). |
| `function` | [`id`](https://auscaster.com/icey/docs/api-reference/icy-smpl-Message.md#id-12) `const` | Returns the message ID string. |
| `function` | [`to`](https://auscaster.com/icey/docs/api-reference/icy-smpl-Message.md#to) `const` | Returns the recipient address parsed from the `to` field. |
| `function` | [`from`](https://auscaster.com/icey/docs/api-reference/icy-smpl-Message.md#from) `const` | Returns the sender address parsed from the `from` field. |
| `function` | [`toUser`](https://auscaster.com/icey/docs/api-reference/icy-smpl-Message.md#touser) `const` | Returns the user component of the `to` address without constructing an [Address](https://auscaster.com/icey/docs/api-reference/icy-smpl-Address.md#address-13). |
| `function` | [`toId`](https://auscaster.com/icey/docs/api-reference/icy-smpl-Message.md#toid) `const` | Returns the id component of the `to` address without constructing an [Address](https://auscaster.com/icey/docs/api-reference/icy-smpl-Address.md#address-13). |
| `function` | [`fromUser`](https://auscaster.com/icey/docs/api-reference/icy-smpl-Message.md#fromuser) `const` | Returns the user component of the `from` address without constructing an [Address](https://auscaster.com/icey/docs/api-reference/icy-smpl-Address.md#address-13). |
| `function` | [`fromId`](https://auscaster.com/icey/docs/api-reference/icy-smpl-Message.md#fromid) `const` | Returns the id component of the `from` address without constructing an [Address](https://auscaster.com/icey/docs/api-reference/icy-smpl-Address.md#address-13). |
| `function` | [`status`](https://auscaster.com/icey/docs/api-reference/icy-smpl-Message.md#status-3) `const` | Returns the HTTP status code, or -1 if not set. |
| `function` | [`setType`](https://auscaster.com/icey/docs/api-reference/icy-smpl-Message.md#settype-2)  | Sets the message type field. |
| `function` | [`setTo`](https://auscaster.com/icey/docs/api-reference/icy-smpl-Message.md#setto)  | Sets the `to` field from a peer's address. |
| `function` | [`setTo`](https://auscaster.com/icey/docs/api-reference/icy-smpl-Message.md#setto-1)  | Sets the `to` field from an address object. |
| `function` | [`setTo`](https://auscaster.com/icey/docs/api-reference/icy-smpl-Message.md#setto-2)  | Sets the `to` field from an address string. |
| `function` | [`setFrom`](https://auscaster.com/icey/docs/api-reference/icy-smpl-Message.md#setfrom)  | Sets the `from` field from a peer's address. |
| `function` | [`setFrom`](https://auscaster.com/icey/docs/api-reference/icy-smpl-Message.md#setfrom-1)  | Sets the `from` field from an address object. |
| `function` | [`setFrom`](https://auscaster.com/icey/docs/api-reference/icy-smpl-Message.md#setfrom-2)  | Sets the `from` field from an address string. |
| `function` | [`setStatus`](https://auscaster.com/icey/docs/api-reference/icy-smpl-Message.md#setstatus-1)  | HTTP status codes are used to describe the message response. Throws std::invalid_argument if code is outside [101, 504]. **See also**: [http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html](http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html) |
| `function` | [`notes`](https://auscaster.com/icey/docs/api-reference/icy-smpl-Message.md#notes)  | Returns a reference to the `notes` JSON array. |
| `function` | [`setNote`](https://auscaster.com/icey/docs/api-reference/icy-smpl-Message.md#setnote)  | Replaces all notes with a single note. |
| `function` | [`addNote`](https://auscaster.com/icey/docs/api-reference/icy-smpl-Message.md#addnote)  | Appends a note to the `notes` array. |
| `function` | [`data`](https://auscaster.com/icey/docs/api-reference/icy-smpl-Message.md#data-9) `const` | Returns a copy of the named data field. |
| `function` | [`data`](https://auscaster.com/icey/docs/api-reference/icy-smpl-Message.md#data-10)  | Returns a reference to the named data field (creates it if absent). |
| `function` | [`setData`](https://auscaster.com/icey/docs/api-reference/icy-smpl-Message.md#setdata)  | Creates or replaces a named data field; returns a reference to it. |
| `function` | [`setData`](https://auscaster.com/icey/docs/api-reference/icy-smpl-Message.md#setdata-1)  | Sets a named data field to a C-string value. |
| `function` | [`setData`](https://auscaster.com/icey/docs/api-reference/icy-smpl-Message.md#setdata-2)  | Sets a named data field to a string value. |
| `function` | [`setData`](https://auscaster.com/icey/docs/api-reference/icy-smpl-Message.md#setdata-3)  | Sets a named data field to a JSON value. |
| `function` | [`setData`](https://auscaster.com/icey/docs/api-reference/icy-smpl-Message.md#setdata-4)  | Sets a named data field to an integer value. |
| `function` | [`removeData`](https://auscaster.com/icey/docs/api-reference/icy-smpl-Message.md#removedata)  | Removes a named field from the `data` sub-object. |
| `function` | [`hasData`](https://auscaster.com/icey/docs/api-reference/icy-smpl-Message.md#hasdata-1)  | Returns true if the named field exists in the `data` sub-object. |
| `function` | [`read`](https://auscaster.com/icey/docs/api-reference/icy-smpl-Message.md#read-17) `virtual` `override` | Deserialises the message from a raw buffer. |
| `function` | [`read`](https://auscaster.com/icey/docs/api-reference/icy-smpl-Message.md#read-18) `virtual` | Deserialises the message from a JSON string. |
| `function` | [`write`](https://auscaster.com/icey/docs/api-reference/icy-smpl-Message.md#write-46) `virtual` `const` `override` | Serialises the message as JSON into a buffer. |
| `function` | [`isRequest`](https://auscaster.com/icey/docs/api-reference/icy-smpl-Message.md#isrequest) `const` | Returns true if no status code has been set (i.e. [status()](https://auscaster.com/icey/docs/api-reference/icy-smpl-Message.md#status-3) == -1). |
| `function` | [`size`](https://auscaster.com/icey/docs/api-reference/icy-smpl-Message.md#size-20) `virtual` `const` `override` | Returns the serialised JSON size in bytes. |
| `function` | [`print`](https://auscaster.com/icey/docs/api-reference/icy-smpl-Message.md#print-18) `virtual` `const` `override` | Pretty-prints the message JSON to the given stream. |
| `function` | [`className`](https://auscaster.com/icey/docs/api-reference/icy-smpl-Message.md#classname-13) `virtual` `const` `inline` `override` | Returns the class name of this packet type for logging and diagnostics. |
| `function` | [`data`](https://auscaster.com/icey/docs/api-reference/icy-smpl-Message.md#data-11) `virtual` `const` `inline` | The packet data pointer for buffered packets. |
| `function` | [`hasData`](https://auscaster.com/icey/docs/api-reference/icy-smpl-Message.md#hasdata-2) `virtual` `const` `inline` | Returns true if the packet has a non-null data pointer. |

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

| Return | Name | Description |
|--------|------|-------------|
|  | [`Presence`](#presence-1)  | Constructs a presence message with type set to "presence". |
|  | [`Presence`](#presence-2)  | Constructs a presence message from a JSON value. |
|  | [`Presence`](#presence-3)  | Copy constructor. |
|  | [`~Presence`](#presence-4) `virtual` |  |
| `bool` | [`isProbe`](#isprobe)  | Returns true if this is a presence probe request. Recipients of a probe should send back their own presence. |
| `void` | [`setProbe`](#setprobe)  | Sets or clears the probe flag on this presence message. |

---

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

### Presence

```cpp
Presence()
```

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

Constructs a presence message with type set to "presence".

---

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

### Presence

```cpp
Presence(const json::Value & root)
```

[Defined in src/symple/include/icy/symple/presence.h:35](https://github.com/auscaster/icey/blob/main/src/symple/include/icy/symple/presence.h#L35)

Constructs a presence message from a JSON value.

#### Parameters

| Parameter | Type | Description |
|-----------|------|-------------|
| `root` | const [`json::Value`](https://auscaster.com/icey/docs/api-reference/icy-json.md#value) & | JSON object to initialise from. |

---

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

### Presence

```cpp
Presence(const Presence & root)
```

[Defined in src/symple/include/icy/symple/presence.h:39](https://github.com/auscaster/icey/blob/main/src/symple/include/icy/symple/presence.h#L39)

Copy constructor.

#### Parameters

| Parameter | Type | Description |
|-----------|------|-------------|
| `root` | const [`Presence`](#presence) & | Source presence message. |

---

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

### ~Presence

`virtual`

```cpp
virtual ~Presence()
```

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

---

<a id="isprobe"></a>

### isProbe

```cpp
bool isProbe()
```

[Defined in src/symple/include/icy/symple/presence.h:45](https://github.com/auscaster/icey/blob/main/src/symple/include/icy/symple/presence.h#L45)

Returns true if this is a presence probe request. Recipients of a probe should send back their own presence.

---

<a id="setprobe"></a>

### setProbe

```cpp
void setProbe(bool flag)
```

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

Sets or clears the probe flag on this presence message.

#### Parameters

| Parameter | Type | Description |
|-----------|------|-------------|
| `flag` | `bool` | True to mark this as a probe. |
