# SyncPacketQueue

<a id="syncpacketqueue"></a>

# SyncPacketQueue

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

template<class T = IPacket>
class SyncPacketQueue
```

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

> **Inherits:** [`SyncQueue< IPacket >`](https://auscaster.com/icey/docs/api-reference/icy-SyncQueue.md#syncqueue), [`PacketProcessor`](https://auscaster.com/icey/docs/api-reference/icy-PacketProcessor.md#packetprocessor)

Synchronized packet queue for event loop integration.

## List of all members

| Name | Kind | Owner |
|------|------|-------|
| [`emitter`](#emitter-3) | `variable` | Declared here |
| [`SyncPacketQueue`](#syncpacketqueue-1) | `function` | Declared here |
| [`SyncPacketQueue`](#syncpacketqueue-2) | `function` | Declared here |
| [`~SyncPacketQueue`](#syncpacketqueue-3) | `function` | Declared here |
| [`process`](#process-10) | `function` | Declared here |
| [`accepts`](#accepts-2) | `function` | Declared here |
| [`retention`](#retention-2) | `function` | Declared here |
| [`dispatch`](#dispatch-2) | `function` | Declared here |
| [`onStreamStateChange`](#onstreamstatechange-4) | `function` | Declared here |
| [`Queue`](#queue-4) | `typedef` | Declared here |
| [`Processor`](#processor-1) | `typedef` | Declared here |
| [`SyncQueue`](https://auscaster.com/icey/docs/api-reference/icy-SyncQueue.md#syncqueue-1) | `function` | Inherited from [`SyncQueue`](https://auscaster.com/icey/docs/api-reference/icy-SyncQueue.md#syncqueue) |
| [`~SyncQueue`](https://auscaster.com/icey/docs/api-reference/icy-SyncQueue.md#syncqueue-2) | `function` | Inherited from [`SyncQueue`](https://auscaster.com/icey/docs/api-reference/icy-SyncQueue.md#syncqueue) |
| [`push`](https://auscaster.com/icey/docs/api-reference/icy-SyncQueue.md#push-3) | `function` | Inherited from [`SyncQueue`](https://auscaster.com/icey/docs/api-reference/icy-SyncQueue.md#syncqueue) |
| [`cancel`](https://auscaster.com/icey/docs/api-reference/icy-SyncQueue.md#cancel-4) | `function` | Inherited from [`SyncQueue`](https://auscaster.com/icey/docs/api-reference/icy-SyncQueue.md#syncqueue) |
| [`sync`](https://auscaster.com/icey/docs/api-reference/icy-SyncQueue.md#sync) | `function` | Inherited from [`SyncQueue`](https://auscaster.com/icey/docs/api-reference/icy-SyncQueue.md#syncqueue) |
| [`_sync`](https://auscaster.com/icey/docs/api-reference/icy-SyncQueue.md#_sync) | `variable` | Inherited from [`SyncQueue`](https://auscaster.com/icey/docs/api-reference/icy-SyncQueue.md#syncqueue) |
| [`Queue`](https://auscaster.com/icey/docs/api-reference/icy-SyncQueue.md#queue-5) | `typedef` | Inherited from [`SyncQueue`](https://auscaster.com/icey/docs/api-reference/icy-SyncQueue.md#syncqueue) |
| [`ondispatch`](https://auscaster.com/icey/docs/api-reference/icy-RunnableQueue.md#ondispatch) | `variable` | Inherited from [`RunnableQueue`](https://auscaster.com/icey/docs/api-reference/icy-RunnableQueue.md#runnablequeue) |
| [`RunnableQueue`](https://auscaster.com/icey/docs/api-reference/icy-RunnableQueue.md#runnablequeue-1) | `function` | Inherited from [`RunnableQueue`](https://auscaster.com/icey/docs/api-reference/icy-RunnableQueue.md#runnablequeue) |
| [`~RunnableQueue`](https://auscaster.com/icey/docs/api-reference/icy-RunnableQueue.md#runnablequeue-2) | `function` | Inherited from [`RunnableQueue`](https://auscaster.com/icey/docs/api-reference/icy-RunnableQueue.md#runnablequeue) |
| [`push`](https://auscaster.com/icey/docs/api-reference/icy-RunnableQueue.md#push-2) | `function` | Inherited from [`RunnableQueue`](https://auscaster.com/icey/docs/api-reference/icy-RunnableQueue.md#runnablequeue) |
| [`flush`](https://auscaster.com/icey/docs/api-reference/icy-RunnableQueue.md#flush-1) | `function` | Inherited from [`RunnableQueue`](https://auscaster.com/icey/docs/api-reference/icy-RunnableQueue.md#runnablequeue) |
| [`clear`](https://auscaster.com/icey/docs/api-reference/icy-RunnableQueue.md#clear-4) | `function` | Inherited from [`RunnableQueue`](https://auscaster.com/icey/docs/api-reference/icy-RunnableQueue.md#runnablequeue) |
| [`run`](https://auscaster.com/icey/docs/api-reference/icy-RunnableQueue.md#run-4) | `function` | Inherited from [`RunnableQueue`](https://auscaster.com/icey/docs/api-reference/icy-RunnableQueue.md#runnablequeue) |
| [`runTimeout`](https://auscaster.com/icey/docs/api-reference/icy-RunnableQueue.md#runtimeout) | `function` | Inherited from [`RunnableQueue`](https://auscaster.com/icey/docs/api-reference/icy-RunnableQueue.md#runnablequeue) |
| [`dispatch`](https://auscaster.com/icey/docs/api-reference/icy-RunnableQueue.md#dispatch-1) | `function` | Inherited from [`RunnableQueue`](https://auscaster.com/icey/docs/api-reference/icy-RunnableQueue.md#runnablequeue) |
| [`timeout`](https://auscaster.com/icey/docs/api-reference/icy-RunnableQueue.md#timeout) | `function` | Inherited from [`RunnableQueue`](https://auscaster.com/icey/docs/api-reference/icy-RunnableQueue.md#runnablequeue) |
| [`setTimeout`](https://auscaster.com/icey/docs/api-reference/icy-RunnableQueue.md#settimeout) | `function` | Inherited from [`RunnableQueue`](https://auscaster.com/icey/docs/api-reference/icy-RunnableQueue.md#runnablequeue) |
| [`dropped`](https://auscaster.com/icey/docs/api-reference/icy-RunnableQueue.md#dropped) | `function` | Inherited from [`RunnableQueue`](https://auscaster.com/icey/docs/api-reference/icy-RunnableQueue.md#runnablequeue) |
| [`_limit`](https://auscaster.com/icey/docs/api-reference/icy-RunnableQueue.md#_limit-2) | `variable` | Inherited from [`RunnableQueue`](https://auscaster.com/icey/docs/api-reference/icy-RunnableQueue.md#runnablequeue) |
| [`_timeout`](https://auscaster.com/icey/docs/api-reference/icy-RunnableQueue.md#_timeout) | `variable` | Inherited from [`RunnableQueue`](https://auscaster.com/icey/docs/api-reference/icy-RunnableQueue.md#runnablequeue) |
| [`_dropped`](https://auscaster.com/icey/docs/api-reference/icy-RunnableQueue.md#_dropped) | `variable` | Inherited from [`RunnableQueue`](https://auscaster.com/icey/docs/api-reference/icy-RunnableQueue.md#runnablequeue) |
| [`RunnableQueue`](https://auscaster.com/icey/docs/api-reference/icy-RunnableQueue.md#runnablequeue-3) | `function` | Inherited from [`RunnableQueue`](https://auscaster.com/icey/docs/api-reference/icy-RunnableQueue.md#runnablequeue) |
| [`operator=`](https://auscaster.com/icey/docs/api-reference/icy-RunnableQueue.md#operator-79) | `function` | Inherited from [`RunnableQueue`](https://auscaster.com/icey/docs/api-reference/icy-RunnableQueue.md#runnablequeue) |
| [`RunnableQueue`](https://auscaster.com/icey/docs/api-reference/icy-RunnableQueue.md#runnablequeue-4) | `function` | Inherited from [`RunnableQueue`](https://auscaster.com/icey/docs/api-reference/icy-RunnableQueue.md#runnablequeue) |
| [`operator=`](https://auscaster.com/icey/docs/api-reference/icy-RunnableQueue.md#operator-80) | `function` | Inherited from [`RunnableQueue`](https://auscaster.com/icey/docs/api-reference/icy-RunnableQueue.md#runnablequeue) |
| [`popNext`](https://auscaster.com/icey/docs/api-reference/icy-RunnableQueue.md#popnext) | `function` | Inherited from [`RunnableQueue`](https://auscaster.com/icey/docs/api-reference/icy-RunnableQueue.md#runnablequeue) |
| [`dispatchNext`](https://auscaster.com/icey/docs/api-reference/icy-RunnableQueue.md#dispatchnext) | `function` | Inherited from [`RunnableQueue`](https://auscaster.com/icey/docs/api-reference/icy-RunnableQueue.md#runnablequeue) |
| [`push`](https://auscaster.com/icey/docs/api-reference/icy-Queue.md#push) | `function` | Inherited from [`Queue`](https://auscaster.com/icey/docs/api-reference/icy-Queue.md#queue-2) |
| [`push`](https://auscaster.com/icey/docs/api-reference/icy-Queue.md#push-1) | `function` | Inherited from [`Queue`](https://auscaster.com/icey/docs/api-reference/icy-Queue.md#queue-2) |
| [`empty`](https://auscaster.com/icey/docs/api-reference/icy-Queue.md#empty-3) | `function` | Inherited from [`Queue`](https://auscaster.com/icey/docs/api-reference/icy-Queue.md#queue-2) |
| [`front`](https://auscaster.com/icey/docs/api-reference/icy-Queue.md#front) | `function` | Inherited from [`Queue`](https://auscaster.com/icey/docs/api-reference/icy-Queue.md#queue-2) |
| [`back`](https://auscaster.com/icey/docs/api-reference/icy-Queue.md#back) | `function` | Inherited from [`Queue`](https://auscaster.com/icey/docs/api-reference/icy-Queue.md#queue-2) |
| [`pop`](https://auscaster.com/icey/docs/api-reference/icy-Queue.md#pop) | `function` | Inherited from [`Queue`](https://auscaster.com/icey/docs/api-reference/icy-Queue.md#queue-2) |
| [`sort`](https://auscaster.com/icey/docs/api-reference/icy-Queue.md#sort) | `function` | Inherited from [`Queue`](https://auscaster.com/icey/docs/api-reference/icy-Queue.md#queue-2) |
| [`size`](https://auscaster.com/icey/docs/api-reference/icy-Queue.md#size-6) | `function` | Inherited from [`Queue`](https://auscaster.com/icey/docs/api-reference/icy-Queue.md#queue-2) |
| [`queue`](https://auscaster.com/icey/docs/api-reference/icy-Queue.md#queue-3) | `function` | Inherited from [`Queue`](https://auscaster.com/icey/docs/api-reference/icy-Queue.md#queue-2) |
| [`_queue`](https://auscaster.com/icey/docs/api-reference/icy-Queue.md#_queue) | `variable` | Inherited from [`Queue`](https://auscaster.com/icey/docs/api-reference/icy-Queue.md#queue-2) |
| [`_mutex`](https://auscaster.com/icey/docs/api-reference/icy-Queue.md#_mutex-4) | `variable` | Inherited from [`Queue`](https://auscaster.com/icey/docs/api-reference/icy-Queue.md#queue-2) |
| [`Runnable`](https://auscaster.com/icey/docs/api-reference/icy-basic-Runnable.md#runnable-1) | `function` | Inherited from [`Runnable`](https://auscaster.com/icey/docs/api-reference/icy-basic-Runnable.md#runnable) |
| [`~Runnable`](https://auscaster.com/icey/docs/api-reference/icy-basic-Runnable.md#runnable-2) | `function` | Inherited from [`Runnable`](https://auscaster.com/icey/docs/api-reference/icy-basic-Runnable.md#runnable) |
| [`run`](https://auscaster.com/icey/docs/api-reference/icy-basic-Runnable.md#run-11) | `function` | Inherited from [`Runnable`](https://auscaster.com/icey/docs/api-reference/icy-basic-Runnable.md#runnable) |
| [`cancel`](https://auscaster.com/icey/docs/api-reference/icy-basic-Runnable.md#cancel-7) | `function` | Inherited from [`Runnable`](https://auscaster.com/icey/docs/api-reference/icy-basic-Runnable.md#runnable) |
| [`cancelled`](https://auscaster.com/icey/docs/api-reference/icy-basic-Runnable.md#cancelled-3) | `function` | Inherited from [`Runnable`](https://auscaster.com/icey/docs/api-reference/icy-basic-Runnable.md#runnable) |
| [`exit`](https://auscaster.com/icey/docs/api-reference/icy-basic-Runnable.md#exit) | `variable` | Inherited from [`Runnable`](https://auscaster.com/icey/docs/api-reference/icy-basic-Runnable.md#runnable) |
| [`PacketProcessor`](https://auscaster.com/icey/docs/api-reference/icy-PacketProcessor.md#packetprocessor-1) | `function` | Inherited from [`PacketProcessor`](https://auscaster.com/icey/docs/api-reference/icy-PacketProcessor.md#packetprocessor) |
| [`process`](https://auscaster.com/icey/docs/api-reference/icy-PacketProcessor.md#process-1) | `function` | Inherited from [`PacketProcessor`](https://auscaster.com/icey/docs/api-reference/icy-PacketProcessor.md#packetprocessor) |
| [`accepts`](https://auscaster.com/icey/docs/api-reference/icy-PacketProcessor.md#accepts-1) | `function` | Inherited from [`PacketProcessor`](https://auscaster.com/icey/docs/api-reference/icy-PacketProcessor.md#packetprocessor) |
| [`operator<<`](https://auscaster.com/icey/docs/api-reference/icy-PacketProcessor.md#operator-69) | `function` | Inherited from [`PacketProcessor`](https://auscaster.com/icey/docs/api-reference/icy-PacketProcessor.md#packetprocessor) |
| [`PacketStreamAdapter`](https://auscaster.com/icey/docs/api-reference/icy-PacketStreamAdapter.md#packetstreamadapter-1) | `function` | Inherited from [`PacketStreamAdapter`](https://auscaster.com/icey/docs/api-reference/icy-PacketStreamAdapter.md#packetstreamadapter) |
| [`~PacketStreamAdapter`](https://auscaster.com/icey/docs/api-reference/icy-PacketStreamAdapter.md#packetstreamadapter-2) | `function` | Inherited from [`PacketStreamAdapter`](https://auscaster.com/icey/docs/api-reference/icy-PacketStreamAdapter.md#packetstreamadapter) |
| [`emit`](https://auscaster.com/icey/docs/api-reference/icy-PacketStreamAdapter.md#emit-1) | `function` | Inherited from [`PacketStreamAdapter`](https://auscaster.com/icey/docs/api-reference/icy-PacketStreamAdapter.md#packetstreamadapter) |
| [`emit`](https://auscaster.com/icey/docs/api-reference/icy-PacketStreamAdapter.md#emit-2) | `function` | Inherited from [`PacketStreamAdapter`](https://auscaster.com/icey/docs/api-reference/icy-PacketStreamAdapter.md#packetstreamadapter) |
| [`emit`](https://auscaster.com/icey/docs/api-reference/icy-PacketStreamAdapter.md#emit-3) | `function` | Inherited from [`PacketStreamAdapter`](https://auscaster.com/icey/docs/api-reference/icy-PacketStreamAdapter.md#packetstreamadapter) |
| [`emit`](https://auscaster.com/icey/docs/api-reference/icy-PacketStreamAdapter.md#emit-4) | `function` | Inherited from [`PacketStreamAdapter`](https://auscaster.com/icey/docs/api-reference/icy-PacketStreamAdapter.md#packetstreamadapter) |
| [`emit`](https://auscaster.com/icey/docs/api-reference/icy-PacketStreamAdapter.md#emit-5) | `function` | Inherited from [`PacketStreamAdapter`](https://auscaster.com/icey/docs/api-reference/icy-PacketStreamAdapter.md#packetstreamadapter) |
| [`getEmitter`](https://auscaster.com/icey/docs/api-reference/icy-PacketStreamAdapter.md#getemitter) | `function` | Inherited from [`PacketStreamAdapter`](https://auscaster.com/icey/docs/api-reference/icy-PacketStreamAdapter.md#packetstreamadapter) |
| [`retention`](https://auscaster.com/icey/docs/api-reference/icy-PacketStreamAdapter.md#retention-1) | `function` | Inherited from [`PacketStreamAdapter`](https://auscaster.com/icey/docs/api-reference/icy-PacketStreamAdapter.md#packetstreamadapter) |
| [`onStreamStateChange`](https://auscaster.com/icey/docs/api-reference/icy-PacketStreamAdapter.md#onstreamstatechange-1) | `function` | Inherited from [`PacketStreamAdapter`](https://auscaster.com/icey/docs/api-reference/icy-PacketStreamAdapter.md#packetstreamadapter) |
| [`_emitter`](https://auscaster.com/icey/docs/api-reference/icy-PacketStreamAdapter.md#_emitter) | `variable` | Inherited from [`PacketStreamAdapter`](https://auscaster.com/icey/docs/api-reference/icy-PacketStreamAdapter.md#packetstreamadapter) |
| [`PacketStreamAdapter`](https://auscaster.com/icey/docs/api-reference/icy-PacketStreamAdapter.md#packetstreamadapter-3) | `function` | Inherited from [`PacketStreamAdapter`](https://auscaster.com/icey/docs/api-reference/icy-PacketStreamAdapter.md#packetstreamadapter) |
| [`operator=`](https://auscaster.com/icey/docs/api-reference/icy-PacketStreamAdapter.md#operator-72) | `function` | Inherited from [`PacketStreamAdapter`](https://auscaster.com/icey/docs/api-reference/icy-PacketStreamAdapter.md#packetstreamadapter) |
| [`PacketStreamAdapter`](https://auscaster.com/icey/docs/api-reference/icy-PacketStreamAdapter.md#packetstreamadapter-4) | `function` | Inherited from [`PacketStreamAdapter`](https://auscaster.com/icey/docs/api-reference/icy-PacketStreamAdapter.md#packetstreamadapter) |
| [`operator=`](https://auscaster.com/icey/docs/api-reference/icy-PacketStreamAdapter.md#operator-73) | `function` | Inherited from [`PacketStreamAdapter`](https://auscaster.com/icey/docs/api-reference/icy-PacketStreamAdapter.md#packetstreamadapter) |

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

| Kind | Name | Description |
|------|------|-------------|
| `function` | [`SyncQueue`](https://auscaster.com/icey/docs/api-reference/icy-SyncQueue.md#syncqueue-1) `inline` |  |
| `function` | [`~SyncQueue`](https://auscaster.com/icey/docs/api-reference/icy-SyncQueue.md#syncqueue-2) `virtual` `inline` | Destruction is deferred to allow enough time for all callbacks to return. |
| `function` | [`push`](https://auscaster.com/icey/docs/api-reference/icy-SyncQueue.md#push-3) `virtual` `inline` `override` | Pushes an item onto the queue and wakes the event loop for dispatch. Ownership of `item` is transferred to the queue. |
| `function` | [`cancel`](https://auscaster.com/icey/docs/api-reference/icy-SyncQueue.md#cancel-4) `virtual` `inline` `override` | Cancels the queue and its underlying synchronizer. |
| `function` | [`sync`](https://auscaster.com/icey/docs/api-reference/icy-SyncQueue.md#sync) `inline` |  |
| `variable` | [`_sync`](https://auscaster.com/icey/docs/api-reference/icy-SyncQueue.md#_sync)  |  |
| `typedef` | [`Queue`](https://auscaster.com/icey/docs/api-reference/icy-SyncQueue.md#queue-5)  |  |

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

| Kind | Name | Description |
|------|------|-------------|
| `variable` | [`ondispatch`](https://auscaster.com/icey/docs/api-reference/icy-RunnableQueue.md#ondispatch)  | The default dispatch function. Must be set before the queue is running. |
| `function` | [`RunnableQueue`](https://auscaster.com/icey/docs/api-reference/icy-RunnableQueue.md#runnablequeue-1) `inline` |  |
| `function` | [`~RunnableQueue`](https://auscaster.com/icey/docs/api-reference/icy-RunnableQueue.md#runnablequeue-2) `virtual` `inline` |  |
| `function` | [`push`](https://auscaster.com/icey/docs/api-reference/icy-RunnableQueue.md#push-2) `virtual` `inline` | Push an item onto the queue. The queue takes ownership of the item pointer. |
| `function` | [`flush`](https://auscaster.com/icey/docs/api-reference/icy-RunnableQueue.md#flush-1) `virtual` `inline` | Flush all outgoing items. |
| `function` | [`clear`](https://auscaster.com/icey/docs/api-reference/icy-RunnableQueue.md#clear-4) `inline` |  |
| `function` | [`run`](https://auscaster.com/icey/docs/api-reference/icy-RunnableQueue.md#run-4) `virtual` `inline` `override` | Called asynchronously to dispatch queued items. If not timeout is set this method blocks until [cancel()](https://auscaster.com/icey/docs/api-reference/icy-basic-Runnable.md#cancel-7) is called, otherwise [runTimeout()](https://auscaster.com/icey/docs/api-reference/icy-RunnableQueue.md#runtimeout) will be called. |
| `function` | [`runTimeout`](https://auscaster.com/icey/docs/api-reference/icy-RunnableQueue.md#runtimeout) `virtual` `inline` | Called asynchronously to dispatch queued items until the queue is empty or the timeout expires. Pseudo protected for std::bind compatability. |
| `function` | [`dispatch`](https://auscaster.com/icey/docs/api-reference/icy-RunnableQueue.md#dispatch-1) `virtual` `inline` | Dispatch a single item to listeners. |
| `function` | [`timeout`](https://auscaster.com/icey/docs/api-reference/icy-RunnableQueue.md#timeout) `inline` |  |
| `function` | [`setTimeout`](https://auscaster.com/icey/docs/api-reference/icy-RunnableQueue.md#settimeout) `inline` | Sets the dispatch timeout. Must only be called when the queue is empty. |
| `function` | [`dropped`](https://auscaster.com/icey/docs/api-reference/icy-RunnableQueue.md#dropped) `const` `inline` |  |
| `variable` | [`_limit`](https://auscaster.com/icey/docs/api-reference/icy-RunnableQueue.md#_limit-2)  |  |
| `variable` | [`_timeout`](https://auscaster.com/icey/docs/api-reference/icy-RunnableQueue.md#_timeout)  |  |
| `variable` | [`_dropped`](https://auscaster.com/icey/docs/api-reference/icy-RunnableQueue.md#_dropped)  |  |
| `function` | [`RunnableQueue`](https://auscaster.com/icey/docs/api-reference/icy-RunnableQueue.md#runnablequeue-3)  | Deleted constructor. |
| `function` | [`operator=`](https://auscaster.com/icey/docs/api-reference/icy-RunnableQueue.md#operator-79)  | Deleted assignment operator. |
| `function` | [`RunnableQueue`](https://auscaster.com/icey/docs/api-reference/icy-RunnableQueue.md#runnablequeue-4)  | Deleted constructor. |
| `function` | [`operator=`](https://auscaster.com/icey/docs/api-reference/icy-RunnableQueue.md#operator-80)  | Deleted assignment operator. |
| `function` | [`popNext`](https://auscaster.com/icey/docs/api-reference/icy-RunnableQueue.md#popnext) `virtual` `inline` | Pops the next waiting item. |
| `function` | [`dispatchNext`](https://auscaster.com/icey/docs/api-reference/icy-RunnableQueue.md#dispatchnext) `virtual` `inline` | Pops and dispatches the next waiting item. |

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

| Kind | Name | Description |
|------|------|-------------|
| `function` | [`push`](https://auscaster.com/icey/docs/api-reference/icy-Queue.md#push) `inline` | Appends an item to the back of the queue (thread-safe). |
| `function` | [`push`](https://auscaster.com/icey/docs/api-reference/icy-Queue.md#push-1) `inline` | Appends an item to the back of the queue by move (thread-safe). |
| `function` | [`empty`](https://auscaster.com/icey/docs/api-reference/icy-Queue.md#empty-3) `const` `inline` |  |
| `function` | [`front`](https://auscaster.com/icey/docs/api-reference/icy-Queue.md#front) `const` `inline` |  |
| `function` | [`back`](https://auscaster.com/icey/docs/api-reference/icy-Queue.md#back) `const` `inline` |  |
| `function` | [`pop`](https://auscaster.com/icey/docs/api-reference/icy-Queue.md#pop) `inline` | Removes the front item from the queue (thread-safe). |
| `function` | [`sort`](https://auscaster.com/icey/docs/api-reference/icy-Queue.md#sort) `inline` | Sorts all queued items using the given comparator (thread-safe). |
| `function` | [`size`](https://auscaster.com/icey/docs/api-reference/icy-Queue.md#size-6) `const` `inline` |  |
| `function` | [`queue`](https://auscaster.com/icey/docs/api-reference/icy-Queue.md#queue-3) `const` `inline` |  |
| `variable` | [`_queue`](https://auscaster.com/icey/docs/api-reference/icy-Queue.md#_queue)  |  |
| `variable` | [`_mutex`](https://auscaster.com/icey/docs/api-reference/icy-Queue.md#_mutex-4)  |  |

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

| Kind | Name | Description |
|------|------|-------------|
| `function` | [`Runnable`](https://auscaster.com/icey/docs/api-reference/icy-basic-Runnable.md#runnable-1) `inline` |  |
| `function` | [`~Runnable`](https://auscaster.com/icey/docs/api-reference/icy-basic-Runnable.md#runnable-2) `virtual` | Defaulted destructor. |
| `function` | [`run`](https://auscaster.com/icey/docs/api-reference/icy-basic-Runnable.md#run-11) `virtual` | The run method will be called by the asynchronous context. |
| `function` | [`cancel`](https://auscaster.com/icey/docs/api-reference/icy-basic-Runnable.md#cancel-7) `virtual` `inline` | Cancel the current task. The [run()](https://auscaster.com/icey/docs/api-reference/icy-basic-Runnable.md#run-11) method should return ASAP. |
| `function` | [`cancelled`](https://auscaster.com/icey/docs/api-reference/icy-basic-Runnable.md#cancelled-3) `virtual` `const` `inline` | Returns true when the task has been cancelled. |
| `variable` | [`exit`](https://auscaster.com/icey/docs/api-reference/icy-basic-Runnable.md#exit)  |  |

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

| Kind | Name | Description |
|------|------|-------------|
| `function` | [`PacketProcessor`](https://auscaster.com/icey/docs/api-reference/icy-PacketProcessor.md#packetprocessor-1) `inline` |  |
| `function` | [`process`](https://auscaster.com/icey/docs/api-reference/icy-PacketProcessor.md#process-1) `virtual` | This method performs processing on the given packet and emits the result. |
| `function` | [`accepts`](https://auscaster.com/icey/docs/api-reference/icy-PacketProcessor.md#accepts-1) `virtual` `inline` | This method ensures compatibility with the given packet type. Return false to reject the packet. |
| `function` | [`operator<<`](https://auscaster.com/icey/docs/api-reference/icy-PacketProcessor.md#operator-69) `virtual` `inline` | [Stream](https://auscaster.com/icey/docs/api-reference/icy-Stream.md#stream) operator alias for [process()](https://auscaster.com/icey/docs/api-reference/icy-PacketProcessor.md#process-1) |

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

| Kind | Name | Description |
|------|------|-------------|
| `function` | [`PacketStreamAdapter`](https://auscaster.com/icey/docs/api-reference/icy-PacketStreamAdapter.md#packetstreamadapter-1)  | Construct the adapter, binding it to the given packet signal. |
| `function` | [`~PacketStreamAdapter`](https://auscaster.com/icey/docs/api-reference/icy-PacketStreamAdapter.md#packetstreamadapter-2) `virtual` `inline` |  |
| `function` | [`emit`](https://auscaster.com/icey/docs/api-reference/icy-PacketStreamAdapter.md#emit-1) `virtual` | Emit a mutable raw buffer as a packet. |
| `function` | [`emit`](https://auscaster.com/icey/docs/api-reference/icy-PacketStreamAdapter.md#emit-2) `virtual` | Emit a read-only raw buffer as a packet (data is copied internally). |
| `function` | [`emit`](https://auscaster.com/icey/docs/api-reference/icy-PacketStreamAdapter.md#emit-3) `virtual` | Emit a string as a packet (data is copied internally). |
| `function` | [`emit`](https://auscaster.com/icey/docs/api-reference/icy-PacketStreamAdapter.md#emit-4) `virtual` | Emit a flag-only packet carrying no payload data. |
| `function` | [`emit`](https://auscaster.com/icey/docs/api-reference/icy-PacketStreamAdapter.md#emit-5) `virtual` | Emit an existing packet directly onto the outgoing signal. |
| `function` | [`getEmitter`](https://auscaster.com/icey/docs/api-reference/icy-PacketStreamAdapter.md#getemitter)  | Returns a reference to the outgoing packet signal. |
| `function` | [`retention`](https://auscaster.com/icey/docs/api-reference/icy-PacketStreamAdapter.md#retention-1) `virtual` `const` | Returns how this adapter treats incoming packet lifetime. Most adapters are synchronous and therefore only borrow the packet for the current call chain. Queue-style adapters override this to advertise that they clone before deferred use. Callers may treat the first adapter reporting Cloned or Retained as the explicit ownership boundary in the stream graph. |
| `function` | [`onStreamStateChange`](https://auscaster.com/icey/docs/api-reference/icy-PacketStreamAdapter.md#onstreamstatechange-1) `virtual` `inline` | Called by the [PacketStream](https://auscaster.com/icey/docs/api-reference/icy-PacketStream.md#packetstream) to notify when the internal [Stream](https://auscaster.com/icey/docs/api-reference/icy-Stream.md#stream) state changes. On receiving the Stopped state, it is the responsibility of the adapter to have ceased all outgoing packet transmission, especially in multi-thread scenarios. |
| `variable` | [`_emitter`](https://auscaster.com/icey/docs/api-reference/icy-PacketStreamAdapter.md#_emitter)  |  |
| `function` | [`PacketStreamAdapter`](https://auscaster.com/icey/docs/api-reference/icy-PacketStreamAdapter.md#packetstreamadapter-3)  | NonCopyable and NonMovable. |
| `function` | [`operator=`](https://auscaster.com/icey/docs/api-reference/icy-PacketStreamAdapter.md#operator-72)  | Deleted assignment operator. |
| `function` | [`PacketStreamAdapter`](https://auscaster.com/icey/docs/api-reference/icy-PacketStreamAdapter.md#packetstreamadapter-4)  | Deleted constructor. |
| `function` | [`operator=`](https://auscaster.com/icey/docs/api-reference/icy-PacketStreamAdapter.md#operator-73)  | Deleted assignment operator. |

## Public Attributes

| Return | Name | Description |
|--------|------|-------------|
| [`PacketSignal`](https://auscaster.com/icey/docs/api-reference/base.md#packetsignal) | [`emitter`](#emitter-3)  |  |

---

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

### emitter

```cpp
PacketSignal emitter
```

Type: [`PacketSignal`](https://auscaster.com/icey/docs/api-reference/base.md#packetsignal)

[Defined in src/base/include/icy/packetqueue.h:72](https://github.com/auscaster/icey/blob/main/src/base/include/icy/packetqueue.h#L72)

## Public Methods

| Return | Name | Description |
|--------|------|-------------|
|  | [`SyncPacketQueue`](#syncpacketqueue-1) `inline` |  |
|  | [`SyncPacketQueue`](#syncpacketqueue-2) `inline` | Uses the default libuv event loop. |
|  | [`~SyncPacketQueue`](#syncpacketqueue-3) `virtual` `inline` |  |
| `void` | [`process`](#process-10) `virtual` `inline` `override` | Clones the incoming packet and pushes it onto the queue for synchronized dispatch. This queue is therefore an explicit [PacketStream](https://auscaster.com/icey/docs/api-reference/icy-PacketStream.md#packetstream) ownership boundary. Drops the packet with a warning if the queue has been cancelled. |
| `bool` | [`accepts`](#accepts-2) `virtual` `inline` `override` | Returns true if the packet can be cast to type `T`. |
| [`PacketRetention`](https://auscaster.com/icey/docs/api-reference/base.md#packetretention) | [`retention`](#retention-2) `virtual` `const` `inline` `override` | Returns how this adapter treats incoming packet lifetime. Most adapters are synchronous and therefore only borrow the packet for the current call chain. Queue-style adapters override this to advertise that they clone before deferred use. Callers may treat the first adapter reporting Cloned or Retained as the explicit ownership boundary in the stream graph. |

---

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

### SyncPacketQueue

`inline`

```cpp
inline SyncPacketQueue(uv::Loop * loop, int maxSize = 1024)
```

[Defined in src/base/include/icy/packetqueue.h:40](https://github.com/auscaster/icey/blob/main/src/base/include/icy/packetqueue.h#L40)

#### Parameters

| Parameter | Type | Description |
|-----------|------|-------------|
| `loop` | [`uv::Loop`](https://auscaster.com/icey/docs/api-reference/uv.md#loop-1) * | Event loop to synchronize dispatch onto. |
| `maxSize` | `int` | Maximum number of queued packets before oldest are dropped. |

---

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

### SyncPacketQueue

`inline`

```cpp
inline SyncPacketQueue(int maxSize = 1024)
```

[Defined in src/base/include/icy/packetqueue.h:48](https://github.com/auscaster/icey/blob/main/src/base/include/icy/packetqueue.h#L48)

Uses the default libuv event loop.

#### Parameters

| Parameter | Type | Description |
|-----------|------|-------------|
| `maxSize` | `int` | Maximum number of queued packets before oldest are dropped. |

---

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

### ~SyncPacketQueue

`virtual` `inline`

```cpp
virtual inline ~SyncPacketQueue()
```

[Defined in src/base/include/icy/packetqueue.h:54](https://github.com/auscaster/icey/blob/main/src/base/include/icy/packetqueue.h#L54)

---

<a id="process-10"></a>

### process

`virtual` `inline` `override`

```cpp
virtual inline void process(IPacket & packet) override
```

[Defined in src/base/include/icy/packetqueue.h:60](https://github.com/auscaster/icey/blob/main/src/base/include/icy/packetqueue.h#L60)

Clones the incoming packet and pushes it onto the queue for synchronized dispatch. This queue is therefore an explicit [PacketStream](https://auscaster.com/icey/docs/api-reference/icy-PacketStream.md#packetstream) ownership boundary. Drops the packet with a warning if the queue has been cancelled.

#### Reimplements

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

#### Parameters

| Parameter | Type | Description |
|-----------|------|-------------|
| `packet` | [`IPacket`](https://auscaster.com/icey/docs/api-reference/icy-IPacket.md#ipacket) & | Incoming packet to enqueue. |

---

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

### accepts

`virtual` `inline` `override`

```cpp
virtual inline bool accepts(IPacket * packet) override
```

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

Returns true if the packet can be cast to type `T`. 
#### Returns
True if `dynamic_cast<T*>(packet)` succeeds.

#### Reimplements

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

#### Parameters

| Parameter | Type | Description |
|-----------|------|-------------|
| `packet` | [`IPacket`](https://auscaster.com/icey/docs/api-reference/icy-IPacket.md#ipacket) * | Packet to test. |

---

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

### retention

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

```cpp
virtual inline PacketRetention retention() const override
```

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

Returns how this adapter treats incoming packet lifetime. Most adapters are synchronous and therefore only borrow the packet for the current call chain. Queue-style adapters override this to advertise that they clone before deferred use. Callers may treat the first adapter reporting Cloned or Retained as the explicit ownership boundary in the stream graph.

#### Reimplements

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

## Protected Methods

| Return | Name | Description |
|--------|------|-------------|
| `void` | [`dispatch`](#dispatch-2) `virtual` `inline` `override` | Emits the packet to downstream processors from the event loop thread. |
| `void` | [`onStreamStateChange`](#onstreamstatechange-4) `virtual` `inline` `override` | Cancels the queue on `Closed` or [`Error`](https://auscaster.com/icey/docs/api-reference/icy-Error.md#error) stream state transitions. |

---

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

### dispatch

`virtual` `inline` `override`

```cpp
virtual inline void dispatch(T & packet) override
```

[Defined in src/base/include/icy/packetqueue.h:77](https://github.com/auscaster/icey/blob/main/src/base/include/icy/packetqueue.h#L77)

Emits the packet to downstream processors from the event loop thread.

#### Reimplements

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

#### Parameters

| Parameter | Type | Description |
|-----------|------|-------------|
| `packet` | `T &` | Packet to dispatch. |

---

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

### onStreamStateChange

`virtual` `inline` `override`

```cpp
virtual inline void onStreamStateChange(const PacketStreamState &) override
```

[Defined in src/base/include/icy/packetqueue.h:81](https://github.com/auscaster/icey/blob/main/src/base/include/icy/packetqueue.h#L81)

Cancels the queue on `Closed` or [`Error`](https://auscaster.com/icey/docs/api-reference/icy-Error.md#error) stream state transitions.

#### Reimplements

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

## Public Types

| Name | Description |
|------|-------------|
| [`Queue`](#queue-4)  |  |
| [`Processor`](#processor-1)  |  |

---

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

### Queue

```cpp
using Queue = SyncQueue< T >
```

Type: [`SyncQueue`](https://auscaster.com/icey/docs/api-reference/icy-SyncQueue.md#syncqueue)< T >

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

---

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

### Processor

```cpp
using Processor = PacketProcessor
```

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

[Defined in src/base/include/icy/packetqueue.h:36](https://github.com/auscaster/icey/blob/main/src/base/include/icy/packetqueue.h#L36)
