Capabilities2 0.3.0
Loading...
Searching...
No Matches
Public Member Functions | Protected Member Functions | Protected Attributes | List of all members
capabilities2_runner::ServiceRunner< ServiceT > Class Template Referenceabstract

service runner base class More...

#include "service_runner.hpp"

Inheritance diagram for capabilities2_runner::ServiceRunner< ServiceT >:
Inheritance graph
[legend]
Collaboration diagram for capabilities2_runner::ServiceRunner< ServiceT >:
Collaboration graph
[legend]

Public Member Functions

 ServiceRunner ()
 Constructor which needs to be empty due to plugin semantics.
 
virtual void init_service (rclcpp::Node::SharedPtr node, const runner_opts &run_config, const std::string &service_name)
 Initializer function for initializing the service runner in place of constructor due to plugin semantics.
 
virtual void stop (const std::string &bond_id, const std::string &instance_id="") override
 stop function to cease functionality and shutdown
 
- Public Member Functions inherited from capabilities2_runner::ThreadTriggerRunner
 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
 
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
 

Protected Member Functions

virtual void execution (capabilities2_events::EventParameters parameters, const std::string &thread_id) override
 Trigger process to be executed.
 
virtual ServiceT::Request generate_request (capabilities2_events::EventParameters &parameters)=0
 Generate a request from parameters.
 
virtual void process_response (typename ServiceT::Response::SharedPtr)
 Process the reponse and print data as required.
 
- 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

rclcpp::Client< ServiceT >::SharedPtr service_client_
 
ServiceT::Response::SharedPtr response_
 
- Protected Attributes inherited from capabilities2_runner::ThreadTriggerRunner
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
 

Additional Inherited Members

- Static Public Member Functions inherited from capabilities2_runner::ThreadTriggerRunner
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
 

Detailed Description

template<typename ServiceT>
class capabilities2_runner::ServiceRunner< ServiceT >

service runner base class

Create an server client to run an service based capability

Constructor & Destructor Documentation

◆ ServiceRunner()

template<typename ServiceT >
capabilities2_runner::ServiceRunner< ServiceT >::ServiceRunner ( )
inline

Constructor which needs to be empty due to plugin semantics.

Member Function Documentation

◆ execution()

template<typename ServiceT >
virtual void capabilities2_runner::ServiceRunner< ServiceT >::execution ( capabilities2_events::EventParameters  parameters,
const std::string &  thread_id 
)
inlineoverrideprotectedvirtual

Trigger process to be executed.

This method utilizes paramters set via the trigger() function

Parameters
parameterspointer to tinyxml2::XMLElement that contains parameters
thread_idunique identifier for the execution thread

Implements capabilities2_runner::ThreadTriggerRunner.

◆ generate_request()

template<typename ServiceT >
virtual ServiceT::Request capabilities2_runner::ServiceRunner< ServiceT >::generate_request ( capabilities2_events::EventParameters parameters)
protectedpure virtual

Generate a request from parameters.

This function is used in conjunction with the trigger function to inject type erased parameters into the typed service

A pattern needs to be implemented in the derived class

Parameters
parameters
Returns
ServiceT::Request the generated request

Implemented in capabilities2_runner::GetCapabilitySpecsRunner.

◆ init_service()

template<typename ServiceT >
virtual void capabilities2_runner::ServiceRunner< ServiceT >::init_service ( rclcpp::Node::SharedPtr  node,
const runner_opts run_config,
const std::string &  service_name 
)
inlinevirtual

Initializer function for initializing the service runner in place of constructor due to plugin semantics.

Parameters
nodeshared pointer to the capabilities node. Allows to use ros node related functionalities
run_configrunner configuration loaded from the yaml file
service_nameaction name used in the yaml file, used to load specific configuration from the run_config

◆ process_response()

template<typename ServiceT >
virtual void capabilities2_runner::ServiceRunner< ServiceT >::process_response ( typename ServiceT::Response::SharedPtr  )
inlineprotectedvirtual

Process the reponse and print data as required.

Parameters
responseservice reponse message
trigger_idthread id associated with this response used for logging and event emission
Returns
capabilities2_events::EventParameters containing updated parameters for the on_success event if needed

A pattern needs to be implemented in the derived class for processing the response and extracting data if needed, currently does nothing.

◆ stop()

template<typename ServiceT >
virtual void capabilities2_runner::ServiceRunner< ServiceT >::stop ( const std::string &  bond_id,
const std::string &  instance_id = "" 
)
inlineoverridevirtual

stop function to cease functionality and shutdown

Implements capabilities2_runner::RunnerBase.

Member Data Documentation

◆ response_

template<typename ServiceT >
ServiceT::Response::SharedPtr capabilities2_runner::ServiceRunner< ServiceT >::response_
protected

◆ service_client_

template<typename ServiceT >
rclcpp::Client<ServiceT>::SharedPtr capabilities2_runner::ServiceRunner< ServiceT >::service_client_
protected

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