# WebRtcTrackReceiver::DispatchState

<a id="dispatchstate"></a>

# DispatchState

```cpp
struct DispatchState
```

[Defined in src/webrtc/include/icy/webrtc/trackreceiver.h:95](https://github.com/auscaster/icey/blob/main/src/webrtc/include/icy/webrtc/trackreceiver.h#L95)

[State](https://auscaster.com/icey/docs/api-reference/icy-State.md#state) shared with track callbacks. The callbacks fire on libdatachannel threads and may be in flight while the receiver is destroyed, so everything they touch lives here behind `mutex` — they must never dereference the receiver itself. The destructor nulls `dispatch` under `mutex` before tearing down the receiver.

## Public Attributes

| Return | Name | Description |
|--------|------|-------------|
| `std::atomic< bool >` | [`alive`](#alive-2)  |  |
| `std::atomic< uint64_t >` | [`generation`](#generation)  |  |
| `std::mutex` | [`mutex`](#mutex)  |  |
| std::deque< std::unique_ptr< [`IPacket`](https://auscaster.com/icey/docs/api-reference/icy-IPacket.md#ipacket) > > | [`pending`](#pending)  |  |
| `std::unique_ptr< detail::ReceiverJitterBuffer >` | [`jitterBuffer`](#jitterbuffer)  |  |
| [`JitterBufferConfig`](https://auscaster.com/icey/docs/api-reference/icy-wrtc-JitterBufferConfig.md#jitterbufferconfig) | [`jitterConfig`](#jitterconfig)  |  |
| `std::int64_t` | [`timerTickMs`](#timertickms)  |  |
| `bool` | [`timerNeedsUpdate`](#timerneedsupdate)  |  |
| [`Synchronizer`](https://auscaster.com/icey/docs/api-reference/icy-Synchronizer.md#synchronizer) * | [`dispatch`](#dispatch-3)  |  |

---

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

### alive

```cpp
std::atomic< bool > alive {true}
```

[Defined in src/webrtc/include/icy/webrtc/trackreceiver.h:100](https://github.com/auscaster/icey/blob/main/src/webrtc/include/icy/webrtc/trackreceiver.h#L100)

---

<a id="generation"></a>

### generation

```cpp
std::atomic< uint64_t > generation {0}
```

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

---

<a id="mutex"></a>

### mutex

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

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

---

<a id="pending"></a>

### pending

```cpp
std::deque< std::unique_ptr< IPacket > > pending
```

Type: std::deque< std::unique_ptr< [`IPacket`](https://auscaster.com/icey/docs/api-reference/icy-IPacket.md#ipacket) > >

[Defined in src/webrtc/include/icy/webrtc/trackreceiver.h:103](https://github.com/auscaster/icey/blob/main/src/webrtc/include/icy/webrtc/trackreceiver.h#L103)

---

<a id="jitterbuffer"></a>

### jitterBuffer

```cpp
std::unique_ptr< detail::ReceiverJitterBuffer > jitterBuffer
```

[Defined in src/webrtc/include/icy/webrtc/trackreceiver.h:104](https://github.com/auscaster/icey/blob/main/src/webrtc/include/icy/webrtc/trackreceiver.h#L104)

---

<a id="jitterconfig"></a>

### jitterConfig

```cpp
JitterBufferConfig jitterConfig
```

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

[Defined in src/webrtc/include/icy/webrtc/trackreceiver.h:105](https://github.com/auscaster/icey/blob/main/src/webrtc/include/icy/webrtc/trackreceiver.h#L105)

---

<a id="timertickms"></a>

### timerTickMs

```cpp
std::int64_t timerTickMs = 5
```

[Defined in src/webrtc/include/icy/webrtc/trackreceiver.h:106](https://github.com/auscaster/icey/blob/main/src/webrtc/include/icy/webrtc/trackreceiver.h#L106)

---

<a id="timerneedsupdate"></a>

### timerNeedsUpdate

```cpp
bool timerNeedsUpdate = false
```

[Defined in src/webrtc/include/icy/webrtc/trackreceiver.h:107](https://github.com/auscaster/icey/blob/main/src/webrtc/include/icy/webrtc/trackreceiver.h#L107)

---

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

### dispatch

```cpp
Synchronizer * dispatch = nullptr
```

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

[Defined in src/webrtc/include/icy/webrtc/trackreceiver.h:108](https://github.com/auscaster/icey/blob/main/src/webrtc/include/icy/webrtc/trackreceiver.h#L108)

## Public Methods

| Return | Name | Description |
|--------|------|-------------|
|  | [`DispatchState`](#dispatchstate-1)  |  |
|  | [`~DispatchState`](#dispatchstate-2)  |  |

---

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

### DispatchState

```cpp
DispatchState()
```

[Defined in src/webrtc/include/icy/webrtc/trackreceiver.h:97](https://github.com/auscaster/icey/blob/main/src/webrtc/include/icy/webrtc/trackreceiver.h#L97)

---

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

### ~DispatchState

```cpp
~DispatchState()
```

[Defined in src/webrtc/include/icy/webrtc/trackreceiver.h:98](https://github.com/auscaster/icey/blob/main/src/webrtc/include/icy/webrtc/trackreceiver.h#L98)
