15template <
typename ServiceT>
34 const std::string& service_name)
43 RCLCPP_INFO(
node_->get_logger(),
"waiting for service: %s", service_name.c_str());
47 RCLCPP_ERROR(
node_->get_logger(),
"failed to connect to service: %s", service_name.c_str());
51 RCLCPP_INFO(
node_->get_logger(),
"connected with service: %s", service_name.c_str());
58 virtual void stop(
const std::string& bond_id,
const std::string& instance_id =
"")
override
75 RCLCPP_INFO(
node_->get_logger(),
"runner cleaned. stopping..");
94 auto request_msg = std::make_shared<typename ServiceT::Request>(
generate_request(parameters));
96 RCLCPP_INFO(
node_->get_logger(),
"request generated for event :%s", instance_id.c_str());
98 std::mutex block_mutex;
99 std::unique_lock<std::mutex> lock(block_mutex);
100 std::condition_variable cv;
101 bool completed =
false;
104 request_msg, [
this, &instance_id, &completed, &bond_id, &cv](
typename rclcpp::Client<ServiceT>::SharedFuture future) {
107 RCLCPP_ERROR(node_->get_logger(),
"get result call failed");
110 emit_failed(bond_id, instance_id, param_on_failure());
114 RCLCPP_INFO(node_->get_logger(),
"get result call succeeded for event :%s", instance_id.c_str());
116 response_ = future.get();
117 process_response(response_);
120 emit_succeeded(bond_id, instance_id, param_on_success());
128 cv.wait(lock, [&completed] {
return completed; });
129 RCLCPP_INFO(
node_->get_logger(),
"Service request complete. Thread closing.");
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...
Definition runner_base.hpp:126
virtual capabilities2_events::EventParameters param_on_stopped()
Update on_stopped event parameters with new data if available.
Definition runner_base.hpp:241
rclcpp::Node::SharedPtr node_
shared pointer to the capabilities node Allows to use ros node related functionalities
Definition runner_base.hpp:469
void emit_stopped(const std::string &bond_id, const std::string &instance_id, capabilities2_events::EventParameters parameters=capabilities2_events::EventParameters())
emit STOPPED event
Definition runner_base.hpp:431
service runner base class
Definition service_runner.hpp:17
virtual void process_response(typename ServiceT::Response::SharedPtr)
Process the reponse and print data as required.
Definition service_runner.hpp:156
virtual void stop(const std::string &bond_id, const std::string &instance_id="") override
stop function to cease functionality and shutdown
Definition service_runner.hpp:58
virtual ServiceT::Request generate_request(capabilities2_events::EventParameters ¶meters)=0
Generate a request from parameters.
virtual void execution(capabilities2_events::EventParameters parameters, const std::string &thread_id) override
Trigger process to be executed.
Definition service_runner.hpp:87
ServiceRunner()
Constructor which needs to be empty due to plugin semantics.
Definition service_runner.hpp:22
rclcpp::Client< ServiceT >::SharedPtr service_client_
Definition service_runner.hpp:158
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 semant...
Definition service_runner.hpp:33
ServiceT::Response::SharedPtr response_
Definition service_runner.hpp:159
add threaded trigger execution to the runner
Definition threadtrigger_runner.hpp:21
static const std::string bond_from_thread_id(const std::string &thread_id)
helper function to extract bond_id from thread_id
Definition threadtrigger_runner.hpp:30
static const std::string instance_from_thread_id(const std::string &thread_id)
helper function to extract instance_id from thread_id
Definition threadtrigger_runner.hpp:44
Definition action_runner.hpp:19
capability options for a capability runner given by interface and provider
Definition event_parameters.hpp:167
runner exception
Definition runner_base.hpp:24
runner options
Definition runner_base.hpp:56