# Queue

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

# Queue

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

template<typename T>
class Queue
```

[Defined in src/base/include/icy/queue.h:30](https://github.com/auscaster/icey/blob/main/src/base/include/icy/queue.h#L30)

> **Subclassed by:** [`RunnableQueue< IPacket >`](https://auscaster.com/icey/docs/api-reference/icy-RunnableQueue.md#runnablequeue), [`RunnableQueue< PacketT >`](https://auscaster.com/icey/docs/api-reference/icy-RunnableQueue.md#runnablequeue), [`PlanarAudioPacket >`](https://auscaster.com/icey/docs/api-reference/icy-RunnableQueue.md#runnablequeue), [`RunnableQueue< VisionFramePacket >`](https://auscaster.com/icey/docs/api-reference/icy-RunnableQueue.md#runnablequeue)

Thread-safe queue container.

## Public Methods

| Return | Name | Description |
|--------|------|-------------|
| `void` | [`push`](#push) `inline` | Appends an item to the back of the queue (thread-safe). |
| `void` | [`push`](#push-1) `inline` | Appends an item to the back of the queue by move (thread-safe). |
| `bool` | [`empty`](#empty-3) `const` `inline` |  |
| `T` | [`front`](#front) `const` `inline` |  |
| `T` | [`back`](#back) `const` `inline` |  |
| `void` | [`pop`](#pop) `inline` | Removes the front item from the queue (thread-safe). |
| `void` | [`sort`](#sort) `inline` | Sorts all queued items using the given comparator (thread-safe). |
| `size_t` | [`size`](#size-6) `const` `inline` |  |
| `std::deque< T >` | [`queue`](#queue-3) `const` `inline` |  |

---

<a id="push"></a>

### push

`inline`

```cpp
inline void push(const T & data)
```

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

Appends an item to the back of the queue (thread-safe).

#### Parameters

| Parameter | Type | Description |
|-----------|------|-------------|
| `data` | `const T &` | Item to enqueue. |

---

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

### push

`inline`

```cpp
inline void push(T && data)
```

[Defined in src/base/include/icy/queue.h:43](https://github.com/auscaster/icey/blob/main/src/base/include/icy/queue.h#L43)

Appends an item to the back of the queue by move (thread-safe).

#### Parameters

| Parameter | Type | Description |
|-----------|------|-------------|
| `data` | `T &&` | Item to enqueue. |

---

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

### empty

`const` `inline`

```cpp
inline bool empty() const
```

[Defined in src/base/include/icy/queue.h:50](https://github.com/auscaster/icey/blob/main/src/base/include/icy/queue.h#L50)

#### Returns
True if the queue contains no items.

---

<a id="front"></a>

### front

`const` `inline`

```cpp
inline T front() const
```

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

#### Returns
Copy of the front item.

---

<a id="back"></a>

### back

`const` `inline`

```cpp
inline T back() const
```

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

#### Returns
Copy of the back item.

---

<a id="pop"></a>

### pop

`inline`

```cpp
inline void pop()
```

[Defined in src/base/include/icy/queue.h:71](https://github.com/auscaster/icey/blob/main/src/base/include/icy/queue.h#L71)

Removes the front item from the queue (thread-safe).

---

<a id="sort"></a>

### sort

`inline`

```cpp
template<typename Compare> inline void sort()
```

[Defined in src/base/include/icy/queue.h:80](https://github.com/auscaster/icey/blob/main/src/base/include/icy/queue.h#L80)

Sorts all queued items using the given comparator (thread-safe).

---

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

### size

`const` `inline`

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

[Defined in src/base/include/icy/queue.h:87](https://github.com/auscaster/icey/blob/main/src/base/include/icy/queue.h#L87)

#### Returns
Number of items currently in the queue (thread-safe).

---

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

### queue

`const` `inline`

```cpp
inline std::deque< T > queue() const
```

[Defined in src/base/include/icy/queue.h:94](https://github.com/auscaster/icey/blob/main/src/base/include/icy/queue.h#L94)

#### Returns
Copy of the underlying deque.

## Protected Attributes

| Return | Name | Description |
|--------|------|-------------|
| `std::deque< T >` | [`_queue`](#_queue)  |  |
| `std::mutex` | [`_mutex`](#_mutex-4)  |  |

---

<a id="_queue"></a>

### _queue

```cpp
std::deque< T > _queue
```

[Defined in src/base/include/icy/queue.h:101](https://github.com/auscaster/icey/blob/main/src/base/include/icy/queue.h#L101)

---

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

### _mutex

```cpp
std::mutex _mutex
```

[Defined in src/base/include/icy/queue.h:102](https://github.com/auscaster/icey/blob/main/src/base/include/icy/queue.h#L102)
