3838using namespace std ::chrono_literals;
3939
4040using rclcpp::exceptions::throw_from_rcl_error;
41- using rclcpp::AnyExecutable;
4241using rclcpp::Executor;
43- using rclcpp::ExecutorOptions;
44- using rclcpp::FutureReturnCode;
4542
4643Executor::Executor (const rclcpp::ExecutorOptions & options)
4744: spinning(false ),
48- interrupt_guard_condition_(options.context),
45+ interrupt_guard_condition_(std::make_shared<rclcpp::GuardCondition>( options.context) ),
4946 shutdown_guard_condition_(std::make_shared<rclcpp::GuardCondition>(options.context)),
5047 memory_strategy_(options.memory_strategy)
5148{
@@ -65,7 +62,7 @@ Executor::Executor(const rclcpp::ExecutorOptions & options)
6562 memory_strategy_->add_guard_condition (*shutdown_guard_condition_.get ());
6663
6764 // Put the executor's guard condition in
68- memory_strategy_->add_guard_condition (interrupt_guard_condition_);
65+ memory_strategy_->add_guard_condition (* interrupt_guard_condition_. get () );
6966 rcl_allocator_t allocator = memory_strategy_->get_allocator ();
7067
7168 rcl_ret_t ret = rcl_wait_set_init (
@@ -127,7 +124,7 @@ Executor::~Executor()
127124 }
128125 // Remove and release the sigint guard condition
129126 memory_strategy_->remove_guard_condition (shutdown_guard_condition_.get ());
130- memory_strategy_->remove_guard_condition (& interrupt_guard_condition_);
127+ memory_strategy_->remove_guard_condition (interrupt_guard_condition_. get () );
131128
132129 // Remove shutdown callback handle registered to Context
133130 if (!context_->remove_on_shutdown_callback (shutdown_callback_handle_)) {
@@ -231,7 +228,7 @@ Executor::add_callback_group_to_map(
231228 if (notify) {
232229 // Interrupt waiting to handle new node
233230 try {
234- interrupt_guard_condition_. trigger ();
231+ interrupt_guard_condition_-> trigger ();
235232 } catch (const rclcpp::exceptions::RCLError & ex) {
236233 throw std::runtime_error (
237234 std::string (
@@ -279,10 +276,10 @@ Executor::add_node(rclcpp::node_interfaces::NodeBaseInterface::SharedPtr node_pt
279276 }
280277 });
281278
282- const auto & gc = node_ptr->get_notify_guard_condition ();
283- weak_nodes_to_guard_conditions_[node_ptr] = &gc ;
279+ const auto gc = node_ptr->get_notify_guard_condition ();
280+ weak_nodes_to_guard_conditions_[node_ptr] = gc. get () ;
284281 // Add the node's notify condition to the guard condition handles
285- memory_strategy_->add_guard_condition (gc);
282+ memory_strategy_->add_guard_condition (* gc);
286283 weak_nodes_.push_back (node_ptr);
287284}
288285
@@ -319,7 +316,7 @@ Executor::remove_callback_group_from_map(
319316
320317 if (notify) {
321318 try {
322- interrupt_guard_condition_. trigger ();
319+ interrupt_guard_condition_-> trigger ();
323320 } catch (const rclcpp::exceptions::RCLError & ex) {
324321 throw std::runtime_error (
325322 std::string (
@@ -387,7 +384,7 @@ Executor::remove_node(rclcpp::node_interfaces::NodeBaseInterface::SharedPtr node
387384 }
388385 }
389386
390- memory_strategy_->remove_guard_condition (& node_ptr->get_notify_guard_condition ());
387+ memory_strategy_->remove_guard_condition (node_ptr->get_notify_guard_condition (). get ());
391388 weak_nodes_to_guard_conditions_.erase (node_ptr);
392389
393390 std::atomic_bool & has_executor = node_ptr->get_associated_with_executor_atomic ();
@@ -500,7 +497,7 @@ Executor::cancel()
500497{
501498 spinning.store (false );
502499 try {
503- interrupt_guard_condition_. trigger ();
500+ interrupt_guard_condition_-> trigger ();
504501 } catch (const rclcpp::exceptions::RCLError & ex) {
505502 throw std::runtime_error (
506503 std::string (" Failed to trigger guard condition in cancel: " ) + ex.what ());
@@ -549,7 +546,7 @@ Executor::execute_any_executable(AnyExecutable & any_exec)
549546 // Wake the wait, because it may need to be recalculated or work that
550547 // was previously blocked is now available.
551548 try {
552- interrupt_guard_condition_. trigger ();
549+ interrupt_guard_condition_-> trigger ();
553550 } catch (const rclcpp::exceptions::RCLError & ex) {
554551 throw std::runtime_error (
555552 std::string (
0 commit comments