For AI agents: a documentation index is available at the root level at /llms.txt and /llms-full.txt. Append /llms.txt to any URL for a page-level index, or .md for the markdown version of any page.
  • Introduction
    • Overview
    • Relevant Technologies
    • Getting Started
  • Setup
    • SDK Installation
    • Additional Setup
    • Third Party Hardware Setup
  • Using the SDK
    • Holoscan Core
    • GPU Resident Execution
    • Holoscan by Example
    • Create an Application
    • Create a Distributed Application
    • Create an Operator
    • Create an Operator via Decorator
    • Create a Condition
    • Dynamic Flow Control
    • CUDA Stream Handling
    • Logging
    • Data Logging
    • Debugging
    • Python Operator Bindings
  • Operators
    • Operators and Extensions
    • Visualization
    • Inference
    • Testing
    • Video I/O Vendor Implementation Guide
  • Components
    • Schedulers
    • Conditions
    • Resources
    • Analytics
  • AI Skills
    • Ai Skills
  • API reference
          • Allocator
          • AnnotatedDoubleBufferReceiver
          • AnnotatedDoubleBufferTransmitter
          • AppDriver
          • Application
          • AppWorker
          • Arg
          • ArgList
          • ArgType
          • ArgumentSetter
          • AsyncBufferReceiver
          • AsyncBufferTransmitter
          • AsyncDataLoggerBackend
          • AsyncDataLoggerResource
          • AsynchronousCondition
          • BlockMemoryPool
          • BooleanCondition
          • CLIParser
          • Clock
          • ClockInterface
          • CodecRegistry
          • Component
          • ComponentBase
          • ComponentSpec
          • Condition
          • ConditionCombiner
          • Config
          • CountCondition
          • CPUResourceMonitor
          • CPUThread
          • CsvDataExporter
          • CudaAllocator
          • CudaBufferAvailableCondition
          • CudaContextScopedPush
          • CudaEventCondition
          • CudaFunctionLauncher
          • CudaGreenContext
          • CudaGreenContextPool
          • CudaObjectHandler
          • CudaStreamCondition
          • CudaStreamHandler
          • CudaStreamPool
          • DataExporter
          • DataFlowTracker
          • DataLogger
          • DataLoggerQueue
          • DataLoggerResource
          • DefaultFragmentService
          • DFFTCollector
          • DistributedAppService
          • DLManagedMemoryBufferVersioned
          • DoubleBufferReceiver
          • DoubleBufferTransmitter
          • DownstreamMessageAffordableCondition
          • Endpoint
          • EventBasedScheduler
          • ExecutionContext
          • Executor
          • ExpiringMessageAvailableCondition
          • ExtensionManager
          • FastDdsDiscovery
          • FastDdsEndpoint
          • FastDdsHoloscanEntityTypeSupport
          • FastDdsNativeBufferAdapter
          • FastDdsPubSubContext
          • FastDdsPubSubNetworkContext
          • FastDdsSerializer
          • FastDdsTransport
          • FileFIFOMutex
          • FirstFitAllocator
          • FirstFitAllocatorBase
          • FirstPixelOutCondition
          • FlowGraph
          • FlowGraphImpl
          • Fragment
          • FragmentAllocationStrategy
          • FragmentScheduler
          • FragmentService
          • FragmentServiceProvider
          • GPUDevice
          • GPUResidentDeck
          • GPUResidentExecutor
          • GPUResidentOperator
          • GPUResourceMonitor
          • GreedyFragmentAllocationStrategy
          • GreedyScheduler
          • GXFComponentResource
          • HoloEntitySerializerBase
          • HoloIpcCudaNativeBufferAdapterBase
          • HoloscanAsyncBufferReceiver
          • HoloscanAsyncBufferTransmitter
          • HoloscanLogger
          • HoloscanUcxReceiver
          • HoloscanUcxTransmitter
          • InMemoryPubSubNetworkContext
          • InMemoryPubSubSession
          • InputContext
          • IOSpec
          • LockFreeQueue
          • Logger
          • ManualClock
          • Map
          • MatXAllocator
          • MemoryAvailableCondition
          • Message
          • MessageAvailableCondition
          • MessageLabel
          • MetadataDictionary
          • MetaParameter
          • MultiMessageAvailableCondition
          • MultiMessageAvailableTimeoutCondition
          • MultiThreadScheduler
          • NativeBufferProtocolAdapter
          • NetworkContext
          • Nullable
          • Operator
          • OperatorSpec
          • OrConditionCombiner
          • OrderedQueue
          • OutputContext
          • ParameterWrapper
          • PathMetrics
          • PeriodicCondition
          • PoseTree
          • PoseTreeEdgeHistory
          • PoseTreeManager
          • PoseTreeUCXClient
          • PoseTreeUCXServer
          • PresentDoneCondition
          • PublisherAvailableCondition
          • PubSubContext
          • PubSubReceiver
          • PubSubTransmitter
          • RealtimeClock
          • Receiver
          • Resource
          • RMMAllocator
          • RuntimeError
          • Scheduler
          • ScopedFlock
          • ScopedWaitedFlock
          • SerializationBuffer
          • SessionDiscoveryFrontend
          • SessionTransportFrontend
          • SidecarDispatchQueue
          • SignalHandler
          • SO2
          • SO3
          • StdComponentSerializer
          • StdEntitySerializer
          • StdPubSubEntitySerializer
          • StreamOrderedAllocator
          • Subgraph
          • SubscriberAvailableCondition
          • SyntheticClock
          • SystemResourceManager
          • Tensor
          • TensorMap
          • ThreadPool
          • Timer
          • Topology
          • Transmitter
          • UcxComponentSerializer
          • UcxContext
          • UcxEntitySerializer
          • UcxHoloscanComponentSerializer
          • UcxReceiver
          • UcxSerializationBuffer
          • UcxTransmitter
          • UnboundedAllocator
  • Performance
    • Performance Considerations
    • Flow Tracking
    • GXF Job Statistics
    • Nsight Profiling
  • HoloHub
    • HoloHub Overview
  • FAQ
    • FAQ
NVIDIANVIDIA
Developer-friendly docs for your API
Privacy Policy | Your Privacy Choices | Terms of Service | Accessibility | Corporate Policies | Product Security | Contact

Copyright © 2026, NVIDIA Corporation.

LogoLogoDocumentation
On this page
  • Constructors
  • PubSubContext
  • Methods
  • gxf_typename
  • setup
  • initialize
  • clock
  • get
  • node_name
  • get_topics
  • get_publisher_count
  • get_subscriber_count
  • registered_publisher_gids
  • registered_subscriber_gids
  • get_publisher_transmitter
  • get_subscriber_receiver
  • to_yaml_node
  • reset_backend_objects
  • set_parameters
  • id
  • name
  • fragment
  • spec
  • spec_shared
  • add_arg
  • resources
  • args
  • description
  • service
  • get_service_by_type_info
  • gxf_context
  • gxf_eid
  • gxf_tid
  • gxf_cid
  • gxf_cname
  • gxf_graph_entity
  • gxf_entity_group_name
  • gxf_entity_group_id
  • gxf_cptr
  • gxf_component
  • gxf_initialize
  • set_gxf_parameter
  • reset_gxf_graph_entity
  • setup_backend
  • update_params_from_args
  • service_provider
  • Static methods
  • register_converter
  • register_argument_setter
  • Member variables
API referenceC++ APIHoloscanClasses

holoscan::PubSubContext

Beta
||View as Markdown|
Previous

holoscan::PublisherAvailableCondition

Next

holoscan::PubSubReceiver

Pub/Sub NetworkContext class for topic-based inter-fragment communication.

PubSubContext provides topic-based publish/subscribe messaging for distributed Holoscan applications. It wraps the GXF nvidia::gxf::PubSubContext component, which is backend-agnostic and supports different discovery and transport implementations.

#include <holoscan/pubsub_context.hpp>

Inherits from: holoscan::gxf::GXFNetworkContext (public)


Constructors

PubSubContext

Move
Default
inlineexplicit
template <typename ArgT,
typename... ArgsT,
typename = std::enable_if_t< !std::is_base_of_v<::holoscan::NetworkContext, std::decay_t<ArgT>> && (std::is_same_v<::holoscan::Arg, std::decay_t<ArgT>> || std::is_same_v<::holoscan::ArgList, std::decay_t<ArgT>>)>>
holoscan::PubSubContext::PubSubContext(holoscan::PubSubContext::PubSubContext(
ArgT &&arg,
ArgsT &&... args
)

Methods

gxf_typename

const char * holoscan::PubSubContext::gxf_typename() const override

Get the type name of the GXF network context.

The returned string is the type name of the GXF network context and is used to create the GXF network context.

Example: “nvidia::holoscan::UcxContext”

Returns: The type name of the GXF network context.

setup

void holoscan::PubSubContext::setup(
ComponentSpec &spec
) override

Define the network context specification.

Parameters

spec
ComponentSpec &

The reference to the component specification.

initialize

void holoscan::PubSubContext::initialize() override

Initialize the network context.

This function is called after the network context is created by holoscan::Fragment::make_network_context().

clock

std::shared_ptr<Clock> holoscan::PubSubContext::clock() overridestd::shared_ptr<Clock> holoscan::PubSubContext::clock() override

Get the Clock used by the network context.

Returns: The Clock used by the network context, or nullptr if not applicable.

get

nvidia::gxf::PubSubContext * holoscan::PubSubContext::get() constnvidia::gxf::PubSubContext * holoscan::PubSubContext::get() const

Get the underlying GXF PubSubContext component.

Returns: Pointer to the GXF PubSubContext, or nullptr if not initialized.

node_name

std::string holoscan::PubSubContext::node_name() const

Get the node name for this context.

Returns: The node name string.

get_topics

std::vector<nvidia::gxf::TopicInfo> holoscan::PubSubContext::get_topics() const

Get information about all known topics.

Returns: Vector of TopicInfo structures.

get_publisher_count

size_t holoscan::PubSubContext::get_publisher_count(
const std::string &topic
) const

Get number of publishers on a topic.

Returns: Number of publishers.

Parameters

topic
const std::string &

Topic name to query.

get_subscriber_count

size_t holoscan::PubSubContext::get_subscriber_count(
const std::string &topic
) const

Get number of subscribers on a topic.

Returns: Number of subscribers.

Parameters

topic
const std::string &

Topic name to query.

registered_publisher_gids

std::vector<nvidia::gxf::Gid> holoscan::PubSubContext::registered_publisher_gids() const

Get the GIDs of all locally registered publishers.

Returns: Vector of publisher GIDs (snapshot under lock).

registered_subscriber_gids

std::vector<nvidia::gxf::Gid> holoscan::PubSubContext::registered_subscriber_gids() const

Get the GIDs of all locally registered subscribers.

Returns: Vector of subscriber GIDs (snapshot under lock).

get_publisher_transmitter

nvidia::gxf::Expected<nvidia::gxf::Handle<nvidia::gxf::Transmitter>> holoscan::PubSubContext::get_publisher_transmitter(nvidia::gxf::Expected<nvidia::gxf::Handle<nvidia::gxf::Transmitter>> holoscan::PubSubContext::get_publisher_transmitter(
const nvidia::gxf::Gid &gid
) const

Look up the transmitter Handle for a registered publisher.

Returns: Handle to the Transmitter, or Unexpected with GXF_ENTITY_NOT_FOUND.

Parameters

gid
const nvidia::gxf::Gid &

Publisher GID.

get_subscriber_receiver

nvidia::gxf::Expected<nvidia::gxf::Handle<nvidia::gxf::Receiver>> holoscan::PubSubContext::get_subscriber_receiver(nvidia::gxf::Expected<nvidia::gxf::Handle<nvidia::gxf::Receiver>> holoscan::PubSubContext::get_subscriber_receiver(
const nvidia::gxf::Gid &gid
) const

Look up the receiver Handle for a registered subscriber.

Returns: Handle to the Receiver, or Unexpected with GXF_ENTITY_NOT_FOUND.

Parameters

gid
const nvidia::gxf::Gid &

Subscriber GID.

to_yaml_node

YAML::Node holoscan::PubSubContext::to_yaml_node() const override

Get a YAML representation of the network context.

Returns: YAML node including type, specs, resources of the network context in addition to the base component properties.

reset_backend_objects

void holoscan::PubSubContext::reset_backend_objects() override

Reset any backend-specific objects.

set_parameters

void holoscan::PubSubContext::set_parameters() override

Set the parameters based on defaults (sets GXF parameters for GXF operators).

id

Mutable
Const
NetworkContext & holoscan::NetworkContext::id(NetworkContext & holoscan::NetworkContext::id(
int64_t id
)

Set the NetworkContext ID.

Returns: The reference to this network context.

Parameters

id
int64_t

The ID of the network context.

name

Set the name of the network context (1)
Set the name of the network context (2)
Const
NetworkContext & holoscan::NetworkContext::name(NetworkContext & holoscan::NetworkContext::name(
const std::string &name
) &

Set the name of the network context.

Returns: The reference to the network context.

Parameters

name
const std::string &

The name of the network context.

fragment

Set the fragment of the network context

Get a pointer to Fragment object

Const
NetworkContext & holoscan::NetworkContext::fragment(NetworkContext & holoscan::NetworkContext::fragment(
Fragment *fragment
)

Set the fragment of the network context.

Returns: The reference to the network context.

Parameters

fragment
Fragment *

The pointer to the fragment of the network context.

spec

Overload 1
Overload 2
NetworkContext & holoscan::NetworkContext::spec(NetworkContext & holoscan::NetworkContext::spec(
const std::shared_ptr<ComponentSpec> &spec
)

Set the component specification to the network context.

Returns: The reference to the network context.

Parameters

spec
const std::shared_ptr<ComponentSpec> &

The component specification.

spec_shared

std::shared_ptr<ComponentSpec> holoscan::NetworkContext::spec_shared()

Get the shared pointer to the component spec.

Returns: The shared pointer to the component spec.

add_arg

Add a resource to the network context (1)
Add a resource to the network context (2)
Add an argument to the component (1)
Add an argument to the component (2)
Add a list of arguments to the component (1)
Add a list of arguments to the component (2)
void holoscan::NetworkContext::add_arg(
const std::shared_ptr<Resource> &arg
)

Add a resource to the network context.

Parameters

arg
const std::shared_ptr<Resource> &

The resource to add.

resources

std::unordered_map<std::string, std::shared_ptr<Resource>> & holoscan::NetworkContext::resources()

Get the resources of the network context.

Returns: The resources of the network context.

args

std::vector<Arg> & holoscan::ComponentBase::args()

Get the list of arguments.

Returns: The vector of arguments.

description

std::string holoscan::ComponentBase::description() const

Get a description of the component.

Returns: YAML string.

See also: to_yaml_node()

service

template <typename ServiceT = DefaultFragmentService>
std::shared_ptr<ServiceT> holoscan::ComponentBase::service(
std::string_view id = ""
) const

Retrieve a registered fragment service or resource.

Retrieves a previously registered fragment service or resource by its type and optional identifier. Returns nullptr if no service/resource is found with the specified type and identifier.

Note that any changes to the service retrieval logic in this method should be synchronized with the implementation in Fragment::service() method to maintain consistency.

Returns: The shared pointer to the service/resource, or nullptr if not found or if type casting fails.

Template parameters

ServiceT
typename

The type of the service/resource to retrieve. Must inherit from either Resource or FragmentService. Defaults to DefaultFragmentService if not specified.

Parameters

id
std::string_viewDefaults to ""

The identifier of the service/resource. If empty, retrieves by type only.

get_service_by_type_info

std::shared_ptr<FragmentService> holoscan::ComponentBase::get_service_by_type_info(
const std::type_info &service_type,
std::string_view id = ""
) const

Retrieve a registered fragment service or resource for Python bindings.

This is a helper method for Python bindings to retrieve a service by its C++ type info.

Returns: The shared pointer to the base service, or nullptr if not found.

Parameters

service_type
const std::type_info &

The type info of the service/resource to retrieve.

id
std::string_viewDefaults to ""

The identifier of the service/resource. If empty, retrieves by type only.

gxf_context

Mutable
Const
void holoscan::gxf::GXFComponent::gxf_context(
gxf_context_t gxf_context
)

gxf_eid

Mutable
Const
void holoscan::gxf::GXFComponent::gxf_eid(
gxf_uid_t gxf_eid
)

gxf_tid

Mutable
Const
void holoscan::gxf::GXFComponent::gxf_tid(
gxf_tid_t gxf_tid
)

gxf_cid

Mutable
Const
void holoscan::gxf::GXFComponent::gxf_cid(
gxf_uid_t gxf_cid
)

gxf_cname

Overload 1
Overload 2
std::string & holoscan::gxf::GXFComponent::gxf_cname()

gxf_graph_entity

Overload 1
Overload 2
std::shared_ptr<nvidia::gxf::GraphEntity> holoscan::gxf::GXFComponent::gxf_graph_entity()

gxf_entity_group_name

std::string holoscan::gxf::GXFComponent::gxf_entity_group_name()

The name of the entity group this component belongs to.

gxf_entity_group_id

gxf_uid_t holoscan::gxf::GXFComponent::gxf_entity_group_id()

The group id of the entity group this component belongs to.

gxf_cptr

void * holoscan::gxf::GXFComponent::gxf_cptr()

gxf_component

nvidia::gxf::Handle<nvidia::gxf::Component> holoscan::gxf::GXFComponent::gxf_component()

gxf_initialize

void holoscan::gxf::GXFComponent::gxf_initialize()

set_gxf_parameter

void holoscan::gxf::GXFComponent::set_gxf_parameter(
const std::string &component_name,
const std::string &key,
ParameterWrapper &param_wrap
)

Set a given parameter on the underlying GXF component.

reset_gxf_graph_entity

void holoscan::gxf::GXFComponent::reset_gxf_graph_entity()

setup_backend

virtual void holoscan::PubSubContext::setup_backend()

Set up the PubSub backend (discovery, transport, serializer).

Called automatically from initialize() after the GXF component is created and get() returns a valid pointer.

The default implementation is a no-op. Subclasses should override this to create backend components and inject them into the GXF PubSubContext:

Example

void setup_backend() override {
auto* gxf_ctx = get();
gxf_ctx->set_discovery(std::make_shared<MyDiscovery>(...));
gxf_ctx->set_transport(std::make_shared<MyTransport>(...));
gxf_ctx->set_serializer(std::make_shared<MySerializer>(...));
gxf_ctx->initialize();
gxf_ctx->init_context();
}

See also: DDSPubSubNetworkContext for the FastDDS backend implementation.

update_params_from_args

Update parameters based on the specified arguments
Update parameters based on the specified arguments (with params)
void holoscan::Component::update_params_from_args()

Update parameters based on the specified arguments.

service_provider

void holoscan::ComponentBase::service_provider(
FragmentServiceProvider *provider
)

Set the service provider that owns this component.


Static methods

register_converter

template <typename typeT>
static void holoscan::ComponentBase::register_converter()

Register the argument setter for the given type.

If an operator or resource has an argument with a custom type, the argument setter must be registered using this method.

The argument setter is used to set the value of the argument from the YAML configuration.

This method can be called in the initialization phase of the operator/resource (e.g., initialize()). The example below shows how to register the argument setter for the custom type (Vec3):

It is assumed that YAML::convert<T>::encode and YAML::convert<T>::decode are implemented for the given type. You need to specialize the YAML::convert<> template class.

For example, suppose that you had a Vec3 class with the following members:

You can define the YAML::convert<Vec3> as follows in a ‘.cpp’ file:

Please refer to the yaml-cpp documentation for more details.

Template parameters

typeT
typename

The type of the argument to register.

Example

void MyOp::initialize() {
register_converter<Vec3>();
}

Example

struct Vec3 {
// make sure you have overloaded operator==() for the comparison
double x, y, z;
};

Example

namespace YAML {
template<>
struct convert<Vec3> {
static Node encode(const Vec3& rhs) {
Node node;
node.push_back(rhs.x);
node.push_back(rhs.y);
node.push_back(rhs.z);
return node;
}
static bool decode(const Node& node, Vec3& rhs) {
if(!node.IsSequence() || node.size() != 3) {
return false;
}
rhs.x = node[0].as<double>();
rhs.y = node[1].as<double>();
rhs.z = node[2].as<double>();
return true;
}
};
}

register_argument_setter

template <typename typeT>
void holoscan::ComponentBase::register_argument_setter()

Register the argument setter for the given type.

Please refer to the documentation of register_converter() for more details.

Template parameters

typeT
typename

The type of the argument to register.


Member variables

NameTypeDescription
node_name_Parameter< std::string >
clock_Parameter< std::shared_ptr< gxf::Clock > >
resources_std::unordered_map< std::string, std::shared_ptr< Resource > >The resources used by the network context.
spec_std::shared_ptr< ComponentSpec >The component specification.
id_int64_tThe ID of the component.
name_std::stringName of the component.
fragment_Fragment *Pointer to the fragment that owns this component.
args_std::vector< Arg >List of arguments.
service_provider_FragmentServiceProvider *Pointer to the service provider.
gxf_context_gxf_context_t
gxf_eid_gxf_uid_t
gxf_tid_gxf_tid_t
gxf_cid_gxf_uid_t
gxf_graph_entity_std::shared_ptr< nvidia::gxf::GraphEntity >
gxf_cname_std::string
gxf_component_nvidia::gxf::Handle< nvidia::gxf::Component >
gxf_cptr_void *