Capabilities2 0.3.0
Loading...
Searching...
No Matches
Public Member Functions | Static Public Member Functions | Protected Member Functions | Protected Attributes | Private Member Functions | List of all members
capabilities2_runner::ThreadTriggerRunner Class Referenceabstract

add threaded trigger execution to the runner More...

#include "threadtrigger_runner.hpp"

Inheritance diagram for capabilities2_runner::ThreadTriggerRunner:
Inheritance graph
[legend]
Collaboration diagram for capabilities2_runner::ThreadTriggerRunner:
Collaboration graph
[legend]

Public Member Functions

 ThreadTriggerRunner ()
 
 ~ThreadTriggerRunner ()
 
virtual void trigger (capabilities2_events::EventParameters &parameters, const std::string &bond_id, const std::string &instance_id) override
 Trigger the runner.
 
- Public Member Functions inherited from capabilities2_runner::RunnerBase
 RunnerBase ()
 
 ~RunnerBase ()=default
 
virtual void start (rclcpp::Node::SharedPtr node, const runner_opts &run_config, const std::string &bond_id)=0
 start the runner
 
virtual void stop (const std::string &bond_id, const std::string &instance_id="")=0
 stop the runner
 
void init_base (rclcpp::Node::SharedPtr node, const runner_opts &run_config)
 Initializer function for initializing the base runner in place of constructor due to plugin semantics.
 
void enable_events (std::shared_ptr< capabilities2_events::EventBase > events)
 enable events system for this runner
 
void add_connection (const std::string &connection_id, const capabilities2_msgs::msg::CapabilityEventCode &type, const capabilities2_msgs::msg::Capability &target, std::function< void(const std::string &, const std::string &, const std::string &, capabilities2_events::EventParameters)> callback)
 make EventNode::add_connection public method on runner api.
 
const std::string get_package_name ()
 get the package name to which the runner belong to.
 
const std::string & get_interface () const
 get the interface of the runner.
 
const std::string & get_provider () const
 get the provider of the runner.
 
const std::string & get_started_by () const
 get the starter of the runner.
 
const std::string & get_pid () const
 get the pid of the runner.
 
- Public Member Functions inherited from capabilities2_events::EventNode
 EventNode (std::shared_ptr< EventBase > event_emitter=nullptr)
 
virtual ~EventNode ()=default
 
void emit_event (const std::string &bond_id, const std::string &instance_id, const uint8_t &event_type, capabilities2_events::EventParameters parameters=capabilities2_events::EventParameters())
 emit an event from this event node to all matching connections
 

Static Public Member Functions

static const std::string bond_from_thread_id (const std::string &thread_id)
 helper function to extract bond_id from thread_id
 
static const std::string instance_from_thread_id (const std::string &thread_id)
 helper function to extract instance_id from thread_id
 

Protected Member Functions

virtual void execution (capabilities2_events::EventParameters parameters, const std::string &thread_id)=0
 Trigger process to be executed.
 
- Protected Member Functions inherited from capabilities2_runner::RunnerBase
virtual capabilities2_events::EventParameters param_on_started ()
 Update on_started event parameters with new data if available.
 
virtual capabilities2_events::EventParameters param_on_stopped ()
 Update on_stopped event parameters with new data if available.
 
virtual capabilities2_events::EventParameters param_on_failure ()
 Update on_failure event parameters with new data if available.
 
virtual capabilities2_events::EventParameters param_on_success ()
 Update on_success event parameters with new data if available.
 
const std::string get_resource_name_by_type (const std::string &resource_type, const std::string &msg_type) const
 Get a resource name by data type from the config.
 
const std::string get_parameter_name_by_type (const std::string &param_type) const
 Get a parameter name by type.
 
const std::string get_topic_name_by_type (const std::string &topic_type) const
 Get a topic name by type.
 
const std::string get_service_name_by_type (const std::string &srv_type) const
 Get a service name by type.
 
const std::string get_action_name_by_type (const std::string &action_type) const
 Get the action name by type object.
 
const std::string get_first_resource_name (const std::string &resource_type) const
 get first name of a given resource
 
const std::string get_first_parameter_name () const
 Get the first parameter name.
 
const std::string get_first_topic_name () const
 Get the first topic name.
 
const std::string get_first_service_name () const
 Get the first service name.
 
const std::string get_first_action_name () const
 Get the first action name.
 
void emit_started (const std::string &bond_id, const std::string &instance_id, capabilities2_events::EventParameters parameters=capabilities2_events::EventParameters())
 emit STARTED event
 
void emit_stopped (const std::string &bond_id, const std::string &instance_id, capabilities2_events::EventParameters parameters=capabilities2_events::EventParameters())
 emit STOPPED event
 
void emit_succeeded (const std::string &bond_id, const std::string &instance_id, capabilities2_events::EventParameters parameters=capabilities2_events::EventParameters())
 emit SUCCEEDED event
 
void emit_failed (const std::string &bond_id, const std::string &instance_id, capabilities2_events::EventParameters parameters=capabilities2_events::EventParameters())
 emit FAILED event
 
- Protected Member Functions inherited from capabilities2_events::EventNode
void set_source (const capabilities2_msgs::msg::Capability &src)
 Set the source object.
 
void set_event_emitter (std::shared_ptr< EventBase > event_emitter)
 event emitter for this event node
 
void add_connection (const std::string &connection_id, const capabilities2_msgs::msg::CapabilityEventCode &type, const capabilities2_msgs::msg::Capability &target, EventBase::event_callback_t event_cb)
 make EventNode::add_connection public method on runner api.
 
void remove_connection (const std::string &connection_id)
 Remove a connection by its id.
 
void clear_connections ()
 clear all connections from this event node
 
std::vector< capabilities2_msgs::msg::CapabilityConnection > list_connections () const
 List all connections from this event node.
 
bool has_connection (const std::string &connection_id) const
 Check if a connection exists.
 
size_t connection_count () const
 current connection count
 
const std::string & get_id () const
 unique id of this event node
 
const capabilities2_msgs::msg::Capability & get_source () const
 source capability of this event node
 
bool is_event_emitter_set () const
 event emitter is set on this node
 

Protected Attributes

std::map< std::string, std::thread > execution_thread_pool_
 dictionary of threads that executes the execute function
 
std::mutex mutex_
 mutex for threadpool synchronisation.
 
std::atomic< bool > execution_should_stop_
 flag to signal execution threads to stop.
 
- Protected Attributes inherited from capabilities2_runner::RunnerBase
rclcpp::Node::SharedPtr node_
 shared pointer to the capabilities node Allows to use ros node related functionalities
 
runner_opts run_config_
 run_config_ runner configuration
 

Private Member Functions

void stop_execution (std::chrono::milliseconds timeout=std::chrono::milliseconds(500))
 

Detailed Description

add threaded trigger execution to the runner

Constructor & Destructor Documentation

◆ ThreadTriggerRunner()

capabilities2_runner::ThreadTriggerRunner::ThreadTriggerRunner ( )
inline

◆ ~ThreadTriggerRunner()

capabilities2_runner::ThreadTriggerRunner::~ThreadTriggerRunner ( )
inline

Member Function Documentation

◆ bond_from_thread_id()

static const std::string capabilities2_runner::ThreadTriggerRunner::bond_from_thread_id ( const std::string &  thread_id)
inlinestatic

helper function to extract bond_id from thread_id

Parameters
thread_idunique identifier for the execution thread, format: "bond_id/trigger_id"
Returns
const std::string

◆ execution()

virtual void capabilities2_runner::ThreadTriggerRunner::execution ( capabilities2_events::EventParameters  parameters,
const std::string &  thread_id 
)
protectedpure virtual

Trigger process to be executed.

This method utilizes parameters set via the trigger() function

Parameters
parametersparameters for the execution
thread_idunique identifier for the execution thread, can be used for tracking and cleanup
Attention
: Should be implemented on derieved classes and should call success and failure events appropriately

Implemented in capabilities2_runner::ActionRunner< ActionT >, capabilities2_runner::ServiceRunner< ServiceT >, capabilities2_runner::ServiceRunner< capabilities2_msgs::srv::GetCapabilitySpecs >, capabilities2_runner::InputMultiplexRunner, and capabilities2_runner::TopicRunner< TopicT >.

◆ instance_from_thread_id()

static const std::string capabilities2_runner::ThreadTriggerRunner::instance_from_thread_id ( const std::string &  thread_id)
inlinestatic

helper function to extract instance_id from thread_id

Parameters
thread_idunique identifier for the execution thread, format: "bond_id/instance_id"
Returns
const std::string

◆ stop_execution()

void capabilities2_runner::ThreadTriggerRunner::stop_execution ( std::chrono::milliseconds  timeout = std::chrono::milliseconds(500))
inlineprivate

◆ trigger()

virtual void capabilities2_runner::ThreadTriggerRunner::trigger ( capabilities2_events::EventParameters parameters,
const std::string &  bond_id,
const std::string &  instance_id 
)
inlineoverridevirtual

Trigger the runner.

This method allows insertion of parameters in a runner after it has been initialized. it is an approach to parameterise capabilities. Internally starts up RunnerBase::triggerExecution in a thread

Parameters
parameterspointer to tinyxml2::XMLElement that contains parameters
bond_idunique identifier for the group of connections associated with this runner trigger event
instance_idunique identifier for the instance associated with this runner trigger event

Implements capabilities2_runner::RunnerBase.

Member Data Documentation

◆ execution_should_stop_

std::atomic<bool> capabilities2_runner::ThreadTriggerRunner::execution_should_stop_
protected

flag to signal execution threads to stop.

◆ execution_thread_pool_

std::map<std::string, std::thread> capabilities2_runner::ThreadTriggerRunner::execution_thread_pool_
protected

dictionary of threads that executes the execute function

◆ mutex_

std::mutex capabilities2_runner::ThreadTriggerRunner::mutex_
protected

mutex for threadpool synchronisation.


The documentation for this class was generated from the following file: