# RawPacket

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

# RawPacket

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

class RawPacket
```

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

> **Inherits:** [`IPacket`](https://auscaster.com/icey/docs/api-reference/icy-IPacket.md#ipacket)
> **Subclassed by:** [`MediaPacket`](https://auscaster.com/icey/docs/api-reference/icy-av-MediaPacket.md#mediapacket), [`SocketPacket`](https://auscaster.com/icey/docs/api-reference/icy-net-SocketPacket.md#socketpacket)

[RawPacket](#rawpacket-4) is the default data packet type which consists of an optionally managed char pointer and a size value.

## List of all members

| Name | Kind | Owner |
|------|------|-------|
| [`RawPacket`](#rawpacket-5) | `function` | Declared here |
| [`RawPacket`](#rawpacket-6) | `function` | Declared here |
| [`RawPacket`](#rawpacket-7) | `function` | Declared here |
| [`~RawPacket`](#rawpacket-8) | `function` | Declared here |
| [`clone`](#clone-3) | `function` | Declared here |
| [`copyData`](#copydata) | `function` | Declared here |
| [`read`](#read-2) | `function` | Declared here |
| [`write`](#write-14) | `function` | Declared here |
| [`data`](#data-4) | `function` | Declared here |
| [`size`](#size-7) | `function` | Declared here |
| [`className`](#classname-2) | `function` | Declared here |
| [`ownsBuffer`](#ownsbuffer) | `function` | Declared here |
| [`_data`](#_data-2) | `variable` | Declared here |
| [`_size`](#_size-2) | `variable` | Declared here |
| [`_owned`](#_owned) | `variable` | 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 |
|--------|------|-------------|
|  | [`RawPacket`](#rawpacket-5) `inline` | Construct with borrowed (non-owning) buffer. |
|  | [`RawPacket`](#rawpacket-6) `inline` | Construct with const data (copied, owning). |
|  | [`RawPacket`](#rawpacket-7) `inline` | Copy constructor (always copies data). |
|  | [`~RawPacket`](#rawpacket-8) `virtual` | Defaulted destructor. |
| std::unique_ptr< [`IPacket`](https://auscaster.com/icey/docs/api-reference/icy-IPacket.md#ipacket) > | [`clone`](#clone-3) `virtual` `const` `inline` `override` |  |
| `void` | [`copyData`](#copydata) `virtual` `inline` | Copies data into an internally owned buffer, replacing any prior content. |
| `ssize_t` | [`read`](#read-2) `virtual` `inline` `override` | Reads from the buffer by copying its contents into an owned buffer. |
| `void` | [`write`](#write-14) `virtual` `const` `inline` `override` | Appends the packet data to the given output buffer. |
| `char *` | [`data`](#data-4) `virtual` `const` `inline` `override` |  |
| `size_t` | [`size`](#size-7) `virtual` `const` `inline` `override` |  |
| `const char *` | [`className`](#classname-2) `virtual` `const` `inline` `override` | Returns the class name of this packet type for logging and diagnostics. |
| `bool` | [`ownsBuffer`](#ownsbuffer) `const` `inline` |  |

---

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

### RawPacket

`inline`

```cpp
inline RawPacket(char * data = nullptr, size_t size = 0, unsigned flags = 0, std::unique_ptr< IPacketInfo > info = nullptr)
```

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

Construct with borrowed (non-owning) buffer.

---

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

### RawPacket

`inline`

```cpp
inline RawPacket(const char * data, size_t size = 0, unsigned flags = 0, std::unique_ptr< IPacketInfo > info = nullptr)
```

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

Construct with const data (copied, owning).

---

<a id="rawpacket-7"></a>

### RawPacket

`inline`

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

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

Copy constructor (always copies data).

---

<a id="rawpacket-8"></a>

### ~RawPacket

`virtual`

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

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

Defaulted destructor.

---

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

### clone

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

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

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

#### Returns
Owning pointer to a deep copy of this packet (always copies data).

#### Reimplements

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

#### Reimplemented by

- [`SocketPacket::clone`](https://auscaster.com/icey/docs/api-reference/icy-net-SocketPacket.md#clone-10)
- [`MediaPacket::clone`](https://auscaster.com/icey/docs/api-reference/icy-av-MediaPacket.md#clone-4)
- [`VideoPacket::clone`](https://auscaster.com/icey/docs/api-reference/icy-av-VideoPacket.md#clone-5)
- [`PlanarVideoPacket::clone`](https://auscaster.com/icey/docs/api-reference/icy-av-PlanarVideoPacket.md#clone-6)
- [`AudioPacket::clone`](https://auscaster.com/icey/docs/api-reference/icy-av-AudioPacket.md#clone-7)
- [`PlanarAudioPacket::clone`](https://auscaster.com/icey/docs/api-reference/icy-av-PlanarAudioPacket.md#clone-8)
- [`VisionFramePacket::clone`](https://auscaster.com/icey/docs/api-reference/icy-vision-VisionFramePacket.md#clone-23)

---

<a id="copydata"></a>

### copyData

`virtual` `inline`

```cpp
virtual inline void copyData(const void * data, size_t size)
```

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

Copies data into an internally owned buffer, replacing any prior content.

#### Parameters

| Parameter | Type | Description |
|-----------|------|-------------|
| `data` | `const void *` | Source data pointer. |
| `size` | `size_t` | Number of bytes to copy. |

---

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

### read

`virtual` `inline` `override`

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

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

Reads from the buffer by copying its contents into an owned buffer. 
#### Returns
Number of bytes consumed (equal to buf.size()).

#### Reimplements

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

#### Reimplemented by

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

#### Parameters

| Parameter | Type | Description |
|-----------|------|-------------|
| `buf` | const [`ConstBuffer`](https://auscaster.com/icey/docs/api-reference/icy-ConstBuffer.md#constbuffer-6) & | Input buffer to read from. |

---

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

### write

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

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

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

Appends the packet data to the given output buffer.

#### Reimplements

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

#### Reimplemented by

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

#### Parameters

| Parameter | Type | Description |
|-----------|------|-------------|
| `buf` | [`Buffer`](https://auscaster.com/icey/docs/api-reference/base.md#buffer) & | Buffer to write into. |

---

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

### data

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

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

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

#### Returns
Mutable pointer to the raw packet data, or nullptr if empty.

#### Reimplements

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

---

<a id="size-7"></a>

### size

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

```cpp
virtual inline size_t size() const override
```

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

#### Returns
Size of the packet data in bytes.

#### Reimplements

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

---

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

### className

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

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

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

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)

#### Reimplemented by

- [`SocketPacket::className`](https://auscaster.com/icey/docs/api-reference/icy-net-SocketPacket.md#classname-10)
- [`MediaPacket::className`](https://auscaster.com/icey/docs/api-reference/icy-av-MediaPacket.md#classname-5)
- [`VideoPacket::className`](https://auscaster.com/icey/docs/api-reference/icy-av-VideoPacket.md#classname-6)
- [`PlanarVideoPacket::className`](https://auscaster.com/icey/docs/api-reference/icy-av-PlanarVideoPacket.md#classname-7)
- [`AudioPacket::className`](https://auscaster.com/icey/docs/api-reference/icy-av-AudioPacket.md#classname-8)
- [`PlanarAudioPacket::className`](https://auscaster.com/icey/docs/api-reference/icy-av-PlanarAudioPacket.md#classname-9)
- [`VisionFramePacket::className`](https://auscaster.com/icey/docs/api-reference/icy-vision-VisionFramePacket.md#classname-16)

---

<a id="ownsbuffer"></a>

### ownsBuffer

`const` `inline`

```cpp
inline bool ownsBuffer() const
```

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

#### Returns
True if this packet owns (manages) its data buffer.

## Protected Attributes

| Return | Name | Description |
|--------|------|-------------|
| `char *` | [`_data`](#_data-2)  |  |
| `size_t` | [`_size`](#_size-2)  |  |
| `std::unique_ptr< char[]>` | [`_owned`](#_owned)  |  |

---

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

### _data

```cpp
char * _data
```

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

---

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

### _size

```cpp
size_t _size
```

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

---

<a id="_owned"></a>

### _owned

```cpp
std::unique_ptr< char[]> _owned
```

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