# FlagPacket

<a id="flagpacket"></a>

# FlagPacket

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

class FlagPacket
```

[Defined in src/base/include/icy/packet.h:146](https://github.com/auscaster/icey/blob/main/src/base/include/icy/packet.h#L146)

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

Packet for sending bitwise flags along the packet stream.

## List of all members

| Name | Kind | Owner |
|------|------|-------|
| [`FlagPacket`](#flagpacket-1) | `function` | Declared here |
| [`clone`](#clone) | `function` | Declared here |
| [`FlagPacket`](#flagpacket-2) | `function` | Declared here |
| [`~FlagPacket`](#flagpacket-3) | `function` | Declared here |
| [`read`](#read) | `function` | Declared here |
| [`write`](#write-3) | `function` | Declared here |
| [`className`](#classname) | `function` | Declared here |
| [`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 [`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 |
|--------|------|-------------|
|  | [`FlagPacket`](#flagpacket-1) `inline` |  |
| std::unique_ptr< [`IPacket`](https://auscaster.com/icey/docs/api-reference/icy-IPacket.md#ipacket) > | [`clone`](#clone) `virtual` `const` `inline` `override` |  |
|  | [`FlagPacket`](#flagpacket-2) `inline` |  |
|  | [`~FlagPacket`](#flagpacket-3) `virtual` | Defaulted destructor. |
| `ssize_t` | [`read`](#read) `virtual` `inline` `override` | No-op read; [FlagPacket](#flagpacket) carries no payload data. |
| `void` | [`write`](#write-3) `virtual` `const` `inline` `override` | No-op write; [FlagPacket](#flagpacket) carries no payload data. |
| `const char *` | [`className`](#classname) `virtual` `const` `inline` `override` | Returns the class name of this packet type for logging and diagnostics. |

---

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

### FlagPacket

`inline`

```cpp
inline FlagPacket(unsigned flags = 0)
```

[Defined in src/base/include/icy/packet.h:150](https://github.com/auscaster/icey/blob/main/src/base/include/icy/packet.h#L150)

#### Parameters

| Parameter | Type | Description |
|-----------|------|-------------|
| `flags` | `unsigned` | [Bitwise](https://auscaster.com/icey/docs/api-reference/icy-Bitwise.md#bitwise) flags to carry in this packet. |

---

<a id="clone"></a>

### clone

`virtual` `const` `inline` `override`

```cpp
virtual inline std::unique_ptr< IPacket > clone() const override
```

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

#### Returns
Owning pointer to a deep copy of this packet.

#### Reimplements

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

---

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

### FlagPacket

`inline`

```cpp
inline FlagPacket(const FlagPacket & that)
```

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

#### Parameters

| Parameter | Type | Description |
|-----------|------|-------------|
| `that` | const [`FlagPacket`](#flagpacket) & | Source packet to copy from. |

---

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

### ~FlagPacket

`virtual`

```cpp
virtual ~FlagPacket() = default
```

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

Defaulted destructor.

---

<a id="read"></a>

### read

`virtual` `inline` `override`

```cpp
virtual inline ssize_t read(const ConstBuffer &) override
```

[Defined in src/base/include/icy/packet.h:171](https://github.com/auscaster/icey/blob/main/src/base/include/icy/packet.h#L171)

No-op read; [FlagPacket](#flagpacket) carries no payload data. 
#### Returns
Always returns true (1).

#### Reimplements

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

---

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

### write

`virtual` `const` `inline` `override`

```cpp
virtual inline void write(Buffer &) const override
```

[Defined in src/base/include/icy/packet.h:174](https://github.com/auscaster/icey/blob/main/src/base/include/icy/packet.h#L174)

No-op write; [FlagPacket](#flagpacket) carries no payload data.

#### Reimplements

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

---

<a id="classname"></a>

### className

`virtual` `const` `inline` `override`

```cpp
virtual inline const char * className() const override
```

[Defined in src/base/include/icy/packet.h:176](https://github.com/auscaster/icey/blob/main/src/base/include/icy/packet.h#L176)

Returns the class name of this packet type for logging and diagnostics.

#### Reimplements

- [`IPacket::className`](https://auscaster.com/icey/docs/api-reference/icy-IPacket.md#classname-1)
