holoscan::Component
holoscan::Component
Common class for all non-Operator components.
This class is the base class for all non-Operator components including holoscan::Condition, holoscan::Resource, holoscan::NetworkContext, holoscan::Scheduler It is used to define the common interface for all components.
holoscan::Operator does not inherit from this class as it uses holoscan::OperatorSpec instead of holoscan::ComponentSpec.
Inherits from: holoscan::ComponentBase (public)
Methods
set_parameters
Set the parameters based on defaults (sets GXF parameters for GXF operators).
spec
Set the component spec
Get a pointer to the component spec
Set the component spec.
Returns: The reference to this component.
Parameters
The component spec.
spec_shared
Get a shared pointer to the component spec.
Returns: The shared pointer to the component spec.
id
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.
name
Get the name of the component.
Returns: The name of the component.
fragment
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)
Add an argument to the component.
Parameters
The argument to add.
args
Get the list of arguments.
Returns: The vector of arguments.
initialize
Initialize the component.
This method is called only once when the component is created for the first time, and use of light-weight initialization.
to_yaml_node
Get a YAML representation of the component.
Returns: YAML node including the id, name, fragment name, and arguments of the component.
description
Get a description of the component.
Returns: YAML string.
See also: to_yaml_node()
service
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
The type of the service/resource to retrieve. Must inherit from either Resource or FragmentService. Defaults to DefaultFragmentService if not specified.
Parameters
The identifier of the service/resource. If empty, retrieves by type only.
get_service_by_type_info
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
The type info of the service/resource to retrieve.
The identifier of the service/resource. If empty, retrieves by type only.
reset_backend_objects
Reset any backend-specific objects (e.g. GXF GraphEntity).
update_params_from_args
Update parameters based on the specified arguments
Update parameters based on the specified arguments (with params)
Update parameters based on the specified arguments.
service_provider
Set the service provider that owns this component.
Static methods
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
The type of the argument to register.
Example
Example
Example
register_argument_setter
Register the argument setter for the given type.
Please refer to the documentation of register_converter() for more details.
Template parameters
The type of the argument to register.