@@ -45,7 +45,7 @@ NodeBase::NodeBase(
4545 node_handle_(nullptr ),
4646 default_callback_group_(default_callback_group),
4747 associated_with_executor_(false ),
48- notify_guard_condition_(context),
48+ notify_guard_condition_(std::make_shared<rclcpp::GuardCondition>( context) ),
4949 notify_guard_condition_is_valid_(false )
5050{
5151 // Create the rcl node and store it in a shared_ptr with a custom destructor.
@@ -254,7 +254,7 @@ NodeBase::get_associated_with_executor_atomic()
254254 return associated_with_executor_;
255255}
256256
257- rclcpp::GuardCondition &
257+ rclcpp::GuardCondition::SharedPtr
258258NodeBase::get_notify_guard_condition ()
259259{
260260 std::lock_guard<std::recursive_mutex> notify_condition_lock (notify_guard_condition_mutex_);
@@ -264,6 +264,16 @@ NodeBase::get_notify_guard_condition()
264264 return notify_guard_condition_;
265265}
266266
267+ void
268+ NodeBase::trigger_notify_guard_condition ()
269+ {
270+ std::lock_guard<std::recursive_mutex> notify_condition_lock (notify_guard_condition_mutex_);
271+ if (!notify_guard_condition_is_valid_) {
272+ throw std::runtime_error (" failed to trigger notify guard condition because it is invalid" );
273+ }
274+ notify_guard_condition_->trigger ();
275+ }
276+
267277bool
268278NodeBase::get_use_intra_process_default () const
269279{
0 commit comments