holoscan::MultiMessageAvailableCondition
holoscan::MultiMessageAvailableCondition
Condition class that allows an operator to execute only when one or more messages are available across the specified input ports.
This condition applies to a specific set of input ports of the operator as determined by setting the “receivers” argument. It can operate in one of two modes:
- “SumOfAll” mode: The condition checks if the sum of messages available across all input ports is greater than or equal to a given threshold. For this mode,
min_sumshould be specified. - “PerReceiver” mode: The condition checks if the number of messages available at each input port is greater than or equal to a given threshold. For this mode,
min_sizesshould be specified. This mode is equivalent to assigning individiaul MessageAvailableConditions to each of the receivers.
Note: This condition must currently be set via the Operator::multi_port_condition method using ConditionType::kMultiMessageAvailable. The “receivers” argument must be set based on the input port names as described in the “Parameters” section below.
==Parameters==
- sampling_mode (std::string or MultiMessageAvailableCondition::SamplingMode) : The mode of operation of this condition (see above). Options are currently “SumOfAll” or “PerReceiver”.
- min_sizes (std::vector<size_t>): The condition permits execution if all given receivers have at least the given number of messages available in this list. This option is only intended for use with “PerReceiver”
sampling_mode. The length ofmin_sizesmust match the number of receivers associated with the condition. - min_sum (size_t): The condition permits execution if the sum of message counts of all receivers have at least the given number of messages available. This option is only intended for use with the “SumOfAll”
sampling_mode. - receivers (std::vector<std::string>): The receivers whose message queues will be checked. This should be specified by a vector containing the names of the Operator’s input ports the condition will apply to. The Holoscan SDK will then automatically replace the port names with the actual receiver objects at application run time.
Inherits from: holoscan::gxf::GXFCondition (public)
Constructors
MultiMessageAvailableCondition
Move
Default
Methods
gxf_typename
receivers
Overload 1
Overload 2
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.
setup
Define the condition specification.
Parameters
The reference to the component specification.
min_sum
Mutable
Const
sampling_mode
Overload 1
Overload 2
add_min_size
min_sizes
get
add_to_graph_entity
Overload 1
Overload 2
to_yaml_node
Get a YAML representation of the condition.
Returns: YAML node including type and spec of the condition in addition to the base component properties.
reset_backend_objects
Reset any backend-specific state.
check
Check the condition status before allowing execution.
If the condition is waiting for a time event ‘target_timestamp’ will contain the target timestamp.
Parameters
The current timestamp
The status of the condition
The target timestamp (used if the term is waiting for a time event).
on_execute
Called each time after the entity of this term was executed.
Parameters
The current timestamp
update_state
Checks if the state of the condition can be updated and updates it.
Parameters
The current timestamp
condition_type
Get the condition type.
Returns: The condition type.
name
Set the name of the condition (1)
Set the name of the condition (2)
Const
Set the name of the condition.
Returns: The reference to the condition.
Parameters
The name of the condition.
fragment
Set the fragment of the condition.
Returns: The reference to the condition.
Parameters
The pointer to the fragment of the condition.
spec
Set the component specification to the condition
Get the component specification of the condition
Set the component specification to the condition.
Returns: The reference to the condition.
Parameters
The component specification.
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 condition (1)
Add a resource to the condition (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)
Add a resource to the condition.
Parameters
The resource to add.
resources
Get the resources of the condition.
Returns: The resources of the condition.
receiver
Return the Receiver corresponding to a specific input port of the Operator associated with this condition.
Returns: The Receiver corresponding to the input port, if it exists. Otherwise, return nullopt.
Parameters
The name of the input port.
transmitter
Return the Transmitter corresponding to a specific output port of the Operator associated with this condition.
Returns: The Transmitter corresponding to the output port, if it exists. Otherwise, return nullopt.
Parameters
The name of the output port.
wrapper_cid
Mutable
Const
Store the component ID for this condition in the underlying backend implementation.
This method may not be needed for all backends.
Parameters
Component id corresponding to the underlying framework
notify_scheduler
Notify the scheduler that an asynchronous event has completed.
This method is used by event-based conditions (those returning kWaitEvent from check()) to signal to the scheduler that the condition is now ready to be re-evaluated.
This method can be called from any thread (e.g., a CUDA host callback or a worker thread). It is thread-safe.
Example usage:
Returns: true if the notification was successful, false otherwise.
Example
See also: SchedulingStatusType::kWaitEvent
set_parameters
Set the parameters based on defaults (sets GXF parameters for GXF components).
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.
args
Get the list of arguments.
Returns: The vector of arguments.
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.
gxf_context
Mutable
Const
gxf_eid
Mutable
Const
gxf_tid
Mutable
Const
gxf_cid
Mutable
Const
gxf_cname
Overload 1
Overload 2
gxf_graph_entity
Overload 1
Overload 2
gxf_entity_group_name
The name of the entity group this component belongs to.
gxf_entity_group_id
The group id of the entity group this component belongs to.
gxf_cptr
gxf_component
gxf_initialize
set_gxf_parameter
Set a given parameter on the underlying GXF component.
reset_gxf_graph_entity
set_operator
Set the Operator this condition is associated with.
Parameters
The pointer to the Operator object.
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.
Types
Typedefs
ConditionComponentType
Resource type used for the initialization of the resource.