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
  • PoseTreeUCXServer
  • Destructor
  • ~PoseTreeUCXServer
  • Assignment operators
  • operator=
  • Methods
  • start
  • stop
  • is_running
  • run
  • Static methods
  • error_to_str
  • Types
  • Typedefs
  • Error
  • Member variables
API referenceC++ APIHoloscanClasses

holoscan::PoseTreeUCXServer

Beta
||View as Markdown|
Previous

holoscan::PoseTreeUCXClient

Next

holoscan::PresentDoneCondition

UCX-based server for remote PoseTree synchronization.

This class provides a server that listens for connections from PoseTreeUCXClient instances to synchronize PoseTree updates across distributed systems using UCX (Unified Communication X). The server maintains its own PoseTree instance and broadcasts updates to all connected clients.

#include <holoscan/pose_tree_ucx_server.hpp>

This class is NOT thread-safe for its public methods. All public methods must be called from the same thread.


Constructors

PoseTreeUCXServer

Construct a new PoseTreeUCXServer object

Deleted overloads
holoscan::PoseTreeUCXServer::PoseTreeUCXServer(holoscan::PoseTreeUCXServer::PoseTreeUCXServer(
std::shared_ptr<PoseTree> pose_tree,
PoseTreeUCXServerConfig config = PoseTreeUCXServerConfig{} PoseTreeUCXServerConfig config = PoseTreeUCXServerConfig{}
)

Construct a new PoseTreeUCXServer object.

Creates a server that will synchronize the provided PoseTree with connected clients. The server creates its own internal copy of the PoseTree to avoid conflicts with the worker thread.

Throws: std::runtime_error if pose_tree is null or not initialized.

Parameters

pose_tree
std::shared_ptr<PoseTree>

The PoseTree instance to synchronize. Must be initialized.

config
PoseTreeUCXServerConfigDefaults to PoseTreeUCXServerConfig{}

Configuration parameters for the server.

Destructor

~PoseTreeUCXServer

holoscan::PoseTreeUCXServer::~PoseTreeUCXServer()holoscan::PoseTreeUCXServer::~PoseTreeUCXServer()

Destructor - ensures clean shutdown.

Automatically stops the server if still running, joins the worker thread, and releases all resources. Any errors during stop are logged but do not throw exceptions (no-throw guarantee).


Assignment operators

operator=

Deleted overloads

The following overloads are deleted to prevent misuse:

PoseTreeUCXServer & holoscan::PoseTreeUCXServer::operator=(const PoseTreeUCXServer &) = delete;PoseTreeUCXServer & holoscan::PoseTreeUCXServer::operator=(const PoseTreeUCXServer &) = delete;PoseTreeUCXServer & holoscan::PoseTreeUCXServer::operator=(const PoseTreeUCXServer &) = delete;
PoseTreeUCXServer & holoscan::PoseTreeUCXServer::operator=(PoseTreeUCXServer &&) = delete;PoseTreeUCXServer & holoscan::PoseTreeUCXServer::operator=(PoseTreeUCXServer &&) = delete;PoseTreeUCXServer & holoscan::PoseTreeUCXServer::operator=(PoseTreeUCXServer &&) = delete;

Methods

start

expected<void> holoscan::PoseTreeUCXServer::start(
uint16_t port
)

Start the server on the specified port.

Starts an internal worker thread that listens for client connections and handles UCX communication. The thread runs until stop() is called or the destructor runs.

This method blocks until the server is fully started or fails to start

Only one server can listen on a given port at a time

Returns: Success (void) or error status

Parameters

port
uint16_t

The port number to listen on (must be non-zero)

stop

expected<void> holoscan::PoseTreeUCXServer::stop()

Stop the server.

Signals the worker thread to stop, notifies all connected clients of shutdown, waits for the thread to finish (join), and cleans up all UCX resources. This method is automatically called by the destructor if needed.

This method is idempotent - calling it when already stopped returns success

This method blocks until the worker thread has fully stopped

Connected clients are given time to disconnect cleanly (controlled by shutdown_timeout_ms)

Returns: Success (void) or error status

is_running

bool holoscan::PoseTreeUCXServer::is_running() const

Check if the server is running.

Returns: true if the server is running, false otherwise

run

void holoscan::PoseTreeUCXServer::run()

Main worker thread function.

Handles UCX worker progress, processes client requests, and manages connections.


Static methods

error_to_str

static const char * holoscan::PoseTreeUCXServer::error_to_str(
Error error
)

Convert an error code to a human readable error string.

Returns: Human-readable error string.

Parameters

error
Error

Error code to convert.


Types

Typedefs

NameDefinitionDescription
expectedholoscan::expected< T, Error >Expected type used by this class.
unexpectedholoscan::unexpected< Error >Unexpected type used by this class.

Error

Error codes used by this class.

NameValueDescription
kAlreadyRunning= 0kAlreadyRunning is returned when trying to start while already running
kInvalidArgument= 1kInvalidArgument is returned when invalid parameters are provided
kStartupFailed= 2kStartupFailed is returned when server fails to start
kNotRunning= 3kNotRunning is returned when trying to perform operations that require the server to be running
kShutdownTimeout= 4kShutdownTimeout is returned when shutdown takes too long
kInternalError= 5kInternalError is returned for unexpected internal errors

Member variables

NameTypeDescription
impl_std::unique_ptr< ServerImpl >Implementation details (PIMPL pattern).
pose_tree_std::shared_ptr< PoseTree >The PoseTree instance being synchronized.
pose_tree_init_params_PoseTree::InitParametersInitialization parameters from the original PoseTree.
port_uint16_tThe port number the server is listening on.
running_std::atomic< bool >Flag indicating if the server is running.
server_thread_std::threadThe worker thread handling UCX communication.
ready_mutex_std::mutexMutex for synchronizing server startup.
ready_cv_std::condition_variableCondition variable for signaling server readiness.
ready_std::atomic< bool >Flag indicating if the server is ready to accept connections.
config_PoseTreeUCXServerConfigConfiguration parameters for the server.