> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://docs.nvidia.com/holoscan/sdk-user-guide/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://docs.nvidia.com/holoscan/sdk-user-guide/_mcp/server.

# holoscan::SidecarDispatchQueue

> Thread-safe queue + dispatch thread for deferred native-descriptor sidecar receives.

Thread-safe queue + dispatch thread for deferred native-descriptor sidecar receives.

Both the DDS and Zenoh transports receive native-descriptor messages on a transport callback thread that must not block. This queue decouples receive from dispatch: the transport callback enqueues items, and a dedicated thread dequeues and delivers them to the [PubSubContext](pubsubcontext) receive callback.

Usage: // In transport constructor: sidecar\_queue\_ = std::make\_unique\<SidecarDispatchQueue>([this]() \{ std::lock\_guard\<std::mutex> lock(my\_mutex\_); return receive\_callback\_; });

// When subscribing: sidecar\_queue\_->start();

// On transport callback thread: sidecar\_queue\_->enqueue(gid, std::move(payload), metadata);

// On shutdown: sidecar\_queue\_->stop();

```cpp showLineNumbers={false}
#include <holoscan/sidecar_dispatch_queue.hpp>
```

---

## Constructors

### SidecarDispatchQueue \[#sidecardispatchqueue]

#### Overload 1

```cpp showLineNumbers={false}
holoscan::SidecarDispatchQueue::SidecarDispatchQueue(
    CallbackProvider get_callback
)
```

#### Copy (deleted)

```cpp showLineNumbers={false}
holoscan::SidecarDispatchQueue::SidecarDispatchQueue(
    const SidecarDispatchQueue &
) = delete
```

### Destructor \[#destructor]

### \~SidecarDispatchQueue

```cpp showLineNumbers={false}
holoscan::SidecarDispatchQueue::~SidecarDispatchQueue()
```

---

## Assignment operators

### operator= \[#operator\_assign]

```cpp showLineNumbers={false}
SidecarDispatchQueue & holoscan::SidecarDispatchQueue::operator=(
    const SidecarDispatchQueue &
) = delete
```

---

## Methods

### start \[#start]

```cpp showLineNumbers={false}
void holoscan::SidecarDispatchQueue::start()
```

Start the dispatch thread. No-op if already running.

### stop \[#stop]

```cpp showLineNumbers={false}
void holoscan::SidecarDispatchQueue::stop()
```

Stop the dispatch thread and drain the queue.

### enqueue \[#enqueue]

```cpp showLineNumbers={false}
void holoscan::SidecarDispatchQueue::enqueue(
    nvidia::gxf::Gid publisher_gid,
    std::vector<uint8_t> &&payload,
    nvidia::gxf::MessageMetadata metadata
)
```

Enqueue a received sidecar message for dispatch. Thread-safe.

### dispatch\_loop \[#dispatchloop]

```cpp showLineNumbers={false}
void holoscan::SidecarDispatchQueue::dispatch_loop()
```

---

## Types

### Typedefs

| Name               | Definition                                      | Description                                                            |
| ------------------ | ----------------------------------------------- | ---------------------------------------------------------------------- |
| `ReceiveCallback`  | `nvidia::gxf::PubSubTransport::ReceiveCallback` |                                                                        |
| `CallbackProvider` | `std::function< ReceiveCallback()>`             | Function that returns the current receive callback (thread-safe copy). |

---

## Member variables

| Name            | Type                      | Description |
| --------------- | ------------------------- | ----------- |
| `get_callback_` | `CallbackProvider`        |             |
| `mutex_`        | `std::mutex`              |             |
| `cv_`           | `std::condition_variable` |             |
| `queue_`        | `std::deque< Item >`      |             |
| `running_`      | `bool`                    |             |
| `thread_`       | `std::thread`             |             |

---

## Inner classes

### Item

```cpp showLineNumbers={false}
struct holoscan::SidecarDispatchQueue::Item
```

| Name            | Type                           | Description |
| --------------- | ------------------------------ | ----------- |
| `publisher_gid` | `nvidia::gxf::Gid`             |             |
| `payload`       | `std::vector< uint8_t >`       |             |
| `metadata`      | `nvidia::gxf::MessageMetadata` |             |