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
  • AsyncDataLoggerResource
  • Destructor
  • ~AsyncDataLoggerResource
  • Assignment operators
  • operator=
  • Methods
  • setup
  • initialize
  • log_data
  • log_tensor_data
  • log_tensormap_data
  • log_backend_specific
  • shutdown
  • set_backend
  • get_statistics
  • get_data_dropped_count
  • get_large_data_dropped_count
  • get_data_queue_size
  • get_large_data_queue_size
  • should_log_message
  • should_log_output
  • should_log_input
  • should_log_metadata
  • should_log_tensor_data_content
  • get_timestamp
  • resource_type
  • name
  • fragment
  • spec
  • spec_shared
  • to_yaml_node
  • set_parameters
  • id
  • add_arg
  • args
  • description
  • service
  • get_service_by_type_info
  • reset_backend_objects
  • start_worker_threads
  • stop_worker_threads
  • data_worker_function
  • large_data_worker_function
  • enqueue_data_entry
  • enqueue_large_data_entry
  • copy_value_from_args
  • update_params_from_args
  • service_provider
  • Static methods
  • register_converter
  • register_argument_setter
  • Types
  • ResourceType
  • Member variables
API referenceC++ APIHoloscanClasses

holoscan::AsyncDataLoggerResource

Beta
||View as Markdown|
Previous

holoscan::AsyncDataLoggerBackend

Next

holoscan::AsynchronousCondition

Asynchronous data logger.

Maintains a queue of items to be logged that are processed by a background thread.

The log_data method is used to send data entries to the primary data queue and is intended to be used to log most data types (e.g. strings, numeric types, small structs, etc.).

This logger can be operated in single queue or dual queue modes.

When the enable_large_data_queue parameter is true, a separate queue will be available for “large” data (e.g. Tensor and TensorMap data). This large data queue is processed by a separate worker thread. If log_tensor_data_contents is true, it is expected that AsyncDataLoggerBackend::process_large_entry would handle logging the actual tensor contents. The AsyncDataLoggerBackend::process_entry method corresponding to the primary queue would typically be designed to log only generic tensor attributes such as shape and dtype.

The dual queue design allows for prioritized processing and selective dropping of large data contents while preserving important metadata if the large data queue becomes full. It is the responsibility of the backend (AsyncDataLoggerBackend) to determine which data types to log to which queue.

When enable_large_data_queue is false, “large” data is sent to the primary queue instead.

Both queues should handle logging the MetadataDictionary when Holoscan’s metadata feature is enabled.

The shutdown_wait_period_ms parameter controls how long the logger waits for remaining messages in the queue(s) to be processed during shutdown. A negative value (default) means wait indefinitely, 0 means don’t wait at all, and a positive value specifies the timeout in milliseconds. The HOLOSCAN_ASYNC_LOGGER_SHUTDOWN_WAIT_MS environment variable can be used to override this value. During shutdown, this resource emits INFO logs that include the component name, approximate queue depths, entries processed so far, and a final summary when worker threads have finished; WARN is used if a drain timeout expires and entries are discarded.

Inherited parameters from DataLoggerResource:

  • log_inputs: bool (optional, default: true)
  • log_outputs: bool (optional, default: true)
  • log_metadata: bool (optional, default: true)
  • log_tensor_data_content: bool (optional, default: false)
  • use_scheduler_clock: bool (optional, default: false)
  • allowlist_patterns: std::vector<std::string> (optional, default: empty)
  • denylist_patterns: std::vector<std::string> (optional, default: empty)

See the DataLoggerResource documentation for details on these inherited parameters.

#include <holoscan/async_data_logger.hpp>

Inherits from: holoscan::DataLoggerResource (public)


Constructors

AsyncDataLoggerResource

Default
Deleted overloads
holoscan::AsyncDataLoggerResource::AsyncDataLoggerResource() = defaultholoscan::AsyncDataLoggerResource::AsyncDataLoggerResource() = default

Destructor

~AsyncDataLoggerResource

holoscan::AsyncDataLoggerResource::~AsyncDataLoggerResource() overrideholoscan::AsyncDataLoggerResource::~AsyncDataLoggerResource() override

Assignment operators

operator=

Deleted overloads

The following overloads are deleted to prevent misuse:

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

Methods

setup

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

Define the resource specification.

Parameters

spec
ComponentSpec &

The reference to the component specification.

initialize

void holoscan::AsyncDataLoggerResource::initialize() override

Initialize the component.

This method is called only once when the component is created for the first time, and use of light-weight initialization.

log_data

bool holoscan::AsyncDataLoggerResource::log_data(
const std::any &data,
const std::string &unique_id,
int64_t acquisition_timestamp = -1,
const std::shared_ptr<MetadataDictionary> &metadata = nullptr,
IOSpec::IOType io_type = IOSpec::IOType::kOutput,
std::optional<cudaStream_t> stream = std::nullopt
) override

Logs a message.

The unique_id for the message will have the form:

  • operator_name.port_name
  • operator_name.port_name:index (for multi-receivers with N:1 connection)

For distributed applications, the fragment name will also appear in the unique id:

  • fragment_name.operator_name.port_name
  • fragment_name.operator_name.port_name:index

Returns: true if logging (including serialization and sending) was successful, false otherwise.

Parameters

data
const std::any &

The data to log, passed as std::any.

unique_id
const std::string &

A unique identifier for the message.

acquisition_timestamp
int64_tDefaults to -1

Timestamp when the data was acquired (-1 if unknown).

metadata
const std::shared_ptr<MetadataDictionary> &Defaults to nullptr

Associated metadata dictionary for the message.

io_type
IOSpec::IOTypeDefaults to IOSpec::IOType::kOutput

The type of I/O port (kInput or kOutput).

stream
std::optional<cudaStream_t>Defaults to std::nullopt

Optional CUDA stream for GPU operations.

log_tensor_data

bool holoscan::AsyncDataLoggerResource::log_tensor_data(
const std::shared_ptr<Tensor> &tensor,
const std::string &unique_id,
int64_t acquisition_timestamp = -1,
const std::shared_ptr<MetadataDictionary> &metadata = nullptr,
IOSpec::IOType io_type = IOSpec::IOType::kOutput,
std::optional<cudaStream_t> stream = std::nullopt
) override

Logs a Tensor with optional data content logging.

This specialized method allows efficient logging of tensor metadata without the overhead of logging large tensor data arrays when only header information is needed.

The unique_id for the message will have the form:

  • operator_name.port_name
  • operator_name.port_name:index (for multi-receivers with N:1 connection)

For distributed applications, the fragment name will also appear in the unique id:

  • fragment_name.operator_name.port_name
  • fragment_name.operator_name.port_name:index

Returns: true if logging was successful, false otherwise.

Parameters

tensor
const std::shared_ptr<Tensor> &

The Tensor to log.

unique_id
const std::string &

A unique identifier for the message.

acquisition_timestamp
int64_tDefaults to -1

Timestamp when the data was acquired (-1 if unknown).

metadata
const std::shared_ptr<MetadataDictionary> &Defaults to nullptr

Associated metadata dictionary for the message.

io_type
IOSpec::IOTypeDefaults to IOSpec::IOType::kOutput

The type of I/O port (kInput or kOutput).

stream
std::optional<cudaStream_t>Defaults to std::nullopt

Optional CUDA stream for GPU operations.

log_tensormap_data

bool holoscan::AsyncDataLoggerResource::log_tensormap_data(
const TensorMap &tensor_map,
const std::string &unique_id,
int64_t acquisition_timestamp = -1,
const std::shared_ptr<MetadataDictionary> &metadata = nullptr,
IOSpec::IOType io_type = IOSpec::IOType::kOutput,
std::optional<cudaStream_t> stream = std::nullopt
) override

Logs a TensorMap with optional data content logging.

This specialized method allows efficient logging of tensor map metadata without the overhead of logging large tensor data arrays when only header information is needed.

The unique_id for the message will have the form:

  • operator_name.port_name
  • operator_name.port_name:index (for multi-receivers with N:1 connection)

For distributed applications, the fragment name will also appear in the unique id:

  • fragment_name.operator_name.port_name
  • fragment_name.operator_name.port_name:index

Returns: true if logging was successful, false otherwise.

Parameters

tensor_map
const TensorMap &

The TensorMap to log.

unique_id
const std::string &

A unique identifier for the message.

acquisition_timestamp
int64_tDefaults to -1

Timestamp when the data was acquired (-1 if unknown).

metadata
const std::shared_ptr<MetadataDictionary> &Defaults to nullptr

Associated metadata dictionary for the message.

io_type
IOSpec::IOTypeDefaults to IOSpec::IOType::kOutput

The type of I/O port (kInput or kOutput).

stream
std::optional<cudaStream_t>Defaults to std::nullopt

Optional CUDA stream for GPU operations.

log_backend_specific

bool holoscan::AsyncDataLoggerResource::log_backend_specific(
const std::any &data,
const std::string &unique_id,
int64_t acquisition_timestamp = -1,
const std::shared_ptr<MetadataDictionary> &metadata = nullptr,
IOSpec::IOType io_type = IOSpec::IOType::kOutput,
std::optional<cudaStream_t> stream = std::nullopt
) override

Logs backend-specific data types.

This method is called for logging backend-specific data types (intended for use with backends that have separate emit/receive codepaths for backend-specific types). The data parameter is kept as std::any here to avoid making the base interface specific to a particular backend, but a backend-specific concrete implementation should be provided as needed via run-time type checking.

A concrete example of a backend-specific type is the GXF Entity type which is a heterogeneous collection of components. An implementation of this method for GXF entities is provided in the concrete implementation of the GXFConsoleLogger.

The unique_id for the message will have the form:

  • operator_name.port_name
  • operator_name.port_name:index (for multi-receivers with N:1 connection)

For distributed applications, the fragment name will also appear in the unique id:

  • fragment_name.operator_name.port_name
  • fragment_name.operator_name.port_name:index

Returns: true if logging was successful, false if backend-specific logging is not supported.

Parameters

data
const std::any &

The backend-specific data to log, passed as std::any.

unique_id
const std::string &

A unique identifier for the message.

acquisition_timestamp
int64_tDefaults to -1

Timestamp when the data was acquired (-1 if unknown).

metadata
const std::shared_ptr<MetadataDictionary> &Defaults to nullptr

Associated metadata dictionary for the message.

io_type
IOSpec::IOTypeDefaults to IOSpec::IOType::kOutput

The type of I/O port (kInput or kOutput).

stream
std::optional<cudaStream_t>Defaults to std::nullopt

Optional CUDA stream for GPU operations.

shutdown

void holoscan::AsyncDataLoggerResource::shutdown() override

Shutdown the data logger.

This method should be called to properly shutdown the data logger, including stopping any background threads and releasing resources. The default implementation does nothing. Data loggers that use background threads or other resources should override this method to perform proper cleanup.

set_backend

void holoscan::AsyncDataLoggerResource::set_backend(
std::shared_ptr<AsyncDataLoggerBackend> backend
)

get_statistics

std::string holoscan::AsyncDataLoggerResource::get_statistics() const

get_data_dropped_count

size_t holoscan::AsyncDataLoggerResource::get_data_dropped_count() const

get_large_data_dropped_count

size_t holoscan::AsyncDataLoggerResource::get_large_data_dropped_count() const

get_data_queue_size

size_t holoscan::AsyncDataLoggerResource::get_data_queue_size() const

get_large_data_queue_size

size_t holoscan::AsyncDataLoggerResource::get_large_data_queue_size() const

should_log_message

bool holoscan::AsyncDataLoggerResource::should_log_message(
const std::string &unique_id
) const

Checks if a message with the given unique_id should be logged based on allowlist/denylist patterns.

This utility function implements the filtering logic:

  • First check if denylist patterns are specified and if there is a match, do not log it.
  • Next check if allowlist_patterns were specified: If no, return true (allow everything) If yes, return true only if there is a match to the specified patterns.
    • If no, return true (allow everything)
    • If yes, return true only if there is a match to the specified patterns.

Returns: true if the message should be logged, false otherwise.

Parameters

unique_id
const std::string &

The unique identifier to check against patterns.

should_log_output

bool holoscan::AsyncDataLoggerResource::should_log_output() const override

Checks if the logger should log output ports.

If False, the data logger will not be applied during op_input.emit() calls from Operator::compute.

Returns: true if the logger should log output ports, false otherwise.

should_log_input

bool holoscan::AsyncDataLoggerResource::should_log_input() const override

Checks if the logger should log input ports.

If False, the data logger will not be applied during op_input.receive() calls from Operator::compute.

Returns: true if the logger should log input ports, false otherwise.

should_log_metadata

bool holoscan::AsyncDataLoggerResource::should_log_metadata() const

Checks if the logger should log metadata.

If False, the data logger will not log metadata for each operator.

Returns: true if the logger should log metadata, false otherwise.

should_log_tensor_data_content

bool holoscan::AsyncDataLoggerResource::should_log_tensor_data_content() const

Checks if the logger should log tensor data content.

If False, only tensor header information will be logged, not the actual data arrays. When true, the full tensor data is also logged.

Returns: true if the logger should log tensor data content, false otherwise.

get_timestamp

virtual int64_t holoscan::AsyncDataLoggerResource::get_timestamp() const

Get the current timestamp for logging operations.

This method is called internally by the logging functions to obtain timestamps for emit_timestamp (when io_type==IOSpec::IOType::kOutput) or receive_timestamp (when io_type==IOSpec::IOType::kInput). The default implementation provides high-resolution timestamps in microseconds since epoch. Implementations can override this to provide custom timing mechanisms as appropriate.

Returns: Current timestamp in microseconds since epoch, or -1 if not available.

resource_type

ResourceType holoscan::Resource::resource_type() const

Get the resource type.

Returns: The resource type.

name

Set the name of the resource (1)
Set the name of the resource (2)
Const
Resource & holoscan::Resource::name(Resource & holoscan::Resource::name(
const std::string &name
) &

Set the name of the resource.

Returns: The reference to the resource.

Parameters

name
const std::string &

The name of the resource.

fragment

Set the fragment of the resource

Get a pointer to Fragment object

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

Set the fragment of the resource.

Returns: The reference to the resource.

Parameters

fragment
Fragment *

The pointer to the fragment of the resource.

spec

Set the component specification to the resource
Get the component specification of the resource
Resource & holoscan::Resource::spec(Resource & holoscan::Resource::spec(
const std::shared_ptr<ComponentSpec> &spec
)

Set the component specification to the resource.

Returns: The reference to the resource.

Parameters

spec
const std::shared_ptr<ComponentSpec> &

The component specification.

spec_shared

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

Get the shared pointer to the component spec.

Returns: The shared pointer to the component spec.

to_yaml_node

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

Get a YAML representation of the resource.

Returns: YAML node including spec of the resource in addition to the base component properties.

set_parameters

void holoscan::Resource::set_parameters() override

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

id

int64_t holoscan::ComponentBase::id() const

Get the identifier of the component.

By default, the identifier is set to -1. It is set to a valid value when the component is initialized.

With the default executor (GXFExecutor), the identifier is set to the GXF component ID.

Returns: The identifier of the component.

add_arg

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::ComponentBase::add_arg(
const Arg &arg
)

Add an argument to the component.

Parameters

arg
const Arg &

The argument to add.

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.

reset_backend_objects

virtual void holoscan::ComponentBase::reset_backend_objects()

Reset any backend-specific objects (e.g. GXF GraphEntity).

start_worker_threads

bool holoscan::AsyncDataLoggerResource::start_worker_threads()

stop_worker_threads

void holoscan::AsyncDataLoggerResource::stop_worker_threads()

data_worker_function

void holoscan::AsyncDataLoggerResource::data_worker_function()

large_data_worker_function

void holoscan::AsyncDataLoggerResource::large_data_worker_function()

enqueue_data_entry

bool holoscan::AsyncDataLoggerResource::enqueue_data_entry(
DataEntry &&entry
)

enqueue_large_data_entry

bool holoscan::AsyncDataLoggerResource::enqueue_large_data_entry(
DataEntry &&entry
)

copy_value_from_args

template <typename ArgT>
ArgT holoscan::AsyncDataLoggerResource::copy_value_from_args(
const std::string &arg_name,
ArgT default_value
)

Helper function to extract typed values from component arguments.

This function handles both direct values and YAML node values, providing robust parameter extraction with fallback to default values.

For a concrete example, see how this function is used in AsyncConsoleLogger.

Returns: The extracted value or the default value

Template parameters

ArgT
typename

The type of the argument to extract

Parameters

arg_name
const std::string &

The name of the argument to look for

default_value
ArgT

The default value to return if the argument is not found or cannot be parsed

update_params_from_args

Update parameters based on the specified arguments
Update parameters based on the specified arguments (with params)
void holoscan::Resource::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.


Types

ResourceType

Resource type used for the initialization of the resource.

NameValueDescription
kNativeNative resource.
kGXFGXF resource.

Member variables

NameTypeDescription
max_queue_size_Parameter< size_t >
worker_sleep_time_Parameter< int64_t >
queue_policy_Parameter< AsyncQueuePolicy >
large_data_max_queue_size_Parameter< size_t >
large_data_worker_sleep_time_Parameter< int64_t >
large_data_queue_policy_Parameter< AsyncQueuePolicy >
enable_large_data_queue_Parameter< bool >
shutdown_wait_period_ms_Parameter< int64_t >
queue_type_Parameter< DataLoggerQueueType >
log_outputs_Parameter< bool >
log_inputs_Parameter< bool >
log_metadata_Parameter< bool >
log_tensor_data_content_Parameter< bool >
use_scheduler_clock_Parameter< bool >
clock_Parameter< std::shared_ptr< Resource > >
clock_interface_std::shared_ptr< ClockInterface >Cached clock interface used by get_timestamp().
allowlist_patterns_Parameter< std::vector< std::string > >
denylist_patterns_Parameter< std::vector< std::string > >
resource_type_ResourceTypeThe type of the resource.
is_initialized_boolWhether the resource is initialized.
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.
data_queue_std::unique_ptr< DataLoggerQueue< DataEntry > >
large_data_queue_std::unique_ptr< DataLoggerQueue< DataEntry > >
data_worker_std::thread
large_data_worker_std::thread
shutdown_requested_std::atomic< bool >
workers_running_std::atomic< bool >
backend_shutdown_called_std::atomic< bool >
shutdown_drain_timeout_expired_std::atomic< bool >
data_dropped_std::atomic< size_t >
data_processed_std::atomic< size_t >
data_enqueued_std::atomic< size_t >
large_data_dropped_std::atomic< size_t >
large_data_processed_std::atomic< size_t >
large_data_enqueued_std::atomic< size_t >
backend_std::shared_ptr< AsyncDataLoggerBackend >
backend_initialized_std::atomic< bool >