holoscan::SidecarDispatchQueue

Beta
View as Markdown

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 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();

#include <holoscan/sidecar_dispatch_queue.hpp>

Constructors

SidecarDispatchQueue

holoscan::SidecarDispatchQueue::SidecarDispatchQueue(holoscan::SidecarDispatchQueue::SidecarDispatchQueue(
CallbackProvider get_callback
)

Destructor

~SidecarDispatchQueue

holoscan::SidecarDispatchQueue::~SidecarDispatchQueue()holoscan::SidecarDispatchQueue::~SidecarDispatchQueue()

Assignment operators

operator=

SidecarDispatchQueue & holoscan::SidecarDispatchQueue::operator=(SidecarDispatchQueue & holoscan::SidecarDispatchQueue::operator=(
const SidecarDispatchQueue &
) = delete

Methods

start

void holoscan::SidecarDispatchQueue::start()

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

stop

void holoscan::SidecarDispatchQueue::stop()

Stop the dispatch thread and drain the queue.

enqueue

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

void holoscan::SidecarDispatchQueue::dispatch_loop()

Types

Typedefs

NameDefinitionDescription
ReceiveCallbacknvidia::gxf::PubSubTransport::ReceiveCallback
CallbackProviderstd::function< ReceiveCallback()>Function that returns the current receive callback (thread-safe copy).

Member variables

NameTypeDescription
get_callback_CallbackProvider
mutex_std::mutex
cv_std::condition_variable
queue_std::deque< Item >
running_bool
thread_std::thread

Inner classes

Item

struct holoscan::SidecarDispatchQueue::Item
NameTypeDescription
publisher_gidnvidia::gxf::Gid
payloadstd::vector< uint8_t >
metadatanvidia::gxf::MessageMetadata