Skip to content

Commit 560e0cd

Browse files
author
Mauro Passerino
committed
EventsExecutor: Use rclcpp::GuardCondition
Signed-off-by: Mauro Passerino <[email protected]>
1 parent 53cc25d commit 560e0cd

File tree

7 files changed

+12
-47
lines changed

7 files changed

+12
-47
lines changed

rclcpp/include/rclcpp/executors/events_executor.hpp

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,8 +29,6 @@
2929
#include "rclcpp/experimental/buffers/simple_events_queue.hpp"
3030
#include "rclcpp/node.hpp"
3131

32-
#include "rmw/listener_callback_type.h"
33-
3432
namespace rclcpp
3533
{
3634
namespace executors

rclcpp/include/rclcpp/executors/events_executor_entities_collector.hpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -209,10 +209,10 @@ class EventsExecutorEntitiesCollector final
209209
unset_callback_group_entities_callbacks(rclcpp::CallbackGroup::SharedPtr group);
210210

211211
void
212-
set_guard_condition_callback(const rcl_guard_condition_t * guard_condition);
212+
set_guard_condition_callback(const rclcpp::GuardCondition * guard_condition);
213213

214214
void
215-
unset_guard_condition_callback(const rcl_guard_condition_t * guard_condition);
215+
unset_guard_condition_callback(const rclcpp::GuardCondition * guard_condition);
216216

217217
void
218218
remove_callback_data(void * entity_id, ExecutorEventType type);
@@ -249,7 +249,7 @@ class EventsExecutorEntitiesCollector final
249249
WeakCallbackGroupsToNodesMap weak_groups_to_nodes_associated_with_executor_;
250250

251251
typedef std::map<rclcpp::node_interfaces::NodeBaseInterface::WeakPtr,
252-
const rcl_guard_condition_t *,
252+
const rclcpp::GuardCondition *,
253253
std::owner_less<rclcpp::node_interfaces::NodeBaseInterface::WeakPtr>>
254254
WeakNodesToGuardConditionsMap;
255255
WeakNodesToGuardConditionsMap weak_nodes_to_guard_conditions_;

rclcpp/include/rclcpp/executors/events_executor_notify_waitable.hpp

Lines changed: 3 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@ class EventsExecutorNotifyWaitable final : public EventWaitable
5353

5454
RCLCPP_PUBLIC
5555
void
56-
add_guard_condition(const rcl_guard_condition_t * guard_condition)
56+
add_guard_condition(const rclcpp::GuardCondition * guard_condition)
5757
{
5858
notify_guard_conditions_.push_back(guard_condition);
5959
}
@@ -65,14 +65,7 @@ class EventsExecutorNotifyWaitable final : public EventWaitable
6565
const void * user_data) const override
6666
{
6767
for (auto gc : notify_guard_conditions_) {
68-
rcl_ret_t ret = rcl_guard_condition_set_listener_callback(
69-
gc,
70-
callback,
71-
user_data);
72-
73-
if (RCL_RET_OK != ret) {
74-
throw std::runtime_error("Couldn't set guard condition events callback");
75-
}
68+
// gc->set_listener_callback();
7669
}
7770
}
7871

@@ -85,7 +78,7 @@ class EventsExecutorNotifyWaitable final : public EventWaitable
8578
}
8679

8780
private:
88-
std::list<const rcl_guard_condition_t *> notify_guard_conditions_;
81+
std::list<const rclcpp::GuardCondition *> notify_guard_conditions_;
8982
};
9083

9184
} // namespace executors

rclcpp/src/rclcpp/executors/events_executor.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ EventsExecutor::EventsExecutor(
4747
// Setup the executor notifier to wake up the executor when some guard conditions are tiggered.
4848
// The added guard conditions are guaranteed to not go out of scope before the executor itself.
4949
executor_notifier_ = std::make_shared<EventsExecutorNotifyWaitable>();
50-
executor_notifier_->add_guard_condition(&shutdown_guard_condition_->get_rcl_guard_condition());
50+
executor_notifier_->add_guard_condition(shutdown_guard_condition_.get());
5151
executor_notifier_->add_guard_condition(&interrupt_guard_condition_);
5252

5353
entities_collector_->add_waitable(executor_notifier_);

rclcpp/src/rclcpp/executors/events_executor_entities_collector.cpp

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -141,10 +141,10 @@ EventsExecutorEntitiesCollector::add_callback_group(
141141
if (is_new_node) {
142142
// Set an event callback for the node's notify guard condition, so if new entities are added
143143
// or removed to this node we will receive an event.
144-
set_guard_condition_callback(node_ptr->get_notify_guard_condition());
144+
set_guard_condition_callback(node_ptr->get_notify_rclcpp_guard_condition());
145145

146146
// Store node's notify guard condition
147-
weak_nodes_to_guard_conditions_[node_ptr] = node_ptr->get_notify_guard_condition();
147+
weak_nodes_to_guard_conditions_[node_ptr] = node_ptr->get_notify_rclcpp_guard_condition();
148148
}
149149

150150
// Add callback group to weak_groups_to_node
@@ -375,7 +375,7 @@ EventsExecutorEntitiesCollector::remove_callback_group_from_map(
375375
// Node doesn't have more callback groups associated to the executor.
376376
// Unset the event callback for the node's notify guard condition, to stop
377377
// receiving events if entities are added or removed to this node.
378-
unset_guard_condition_callback(node_ptr->get_notify_guard_condition());
378+
unset_guard_condition_callback(node_ptr->get_notify_rclcpp_guard_condition());
379379

380380
// Remove guard condition from list
381381
rclcpp::node_interfaces::NodeBaseInterface::WeakPtr weak_node_ptr(node_ptr);
@@ -485,7 +485,7 @@ EventsExecutorEntitiesCollector::get_automatically_added_callback_groups_from_no
485485

486486
void
487487
EventsExecutorEntitiesCollector::set_guard_condition_callback(
488-
const rcl_guard_condition_t * guard_condition)
488+
const rclcpp::GuardCondition * guard_condition)
489489
{
490490
rcl_ret_t ret = rcl_guard_condition_set_listener_callback(
491491
guard_condition,
@@ -499,7 +499,7 @@ EventsExecutorEntitiesCollector::set_guard_condition_callback(
499499

500500
void
501501
EventsExecutorEntitiesCollector::unset_guard_condition_callback(
502-
const rcl_guard_condition_t * guard_condition)
502+
const rclcpp::GuardCondition * guard_condition)
503503
{
504504
rcl_ret_t ret = rcl_guard_condition_set_listener_callback(
505505
guard_condition, nullptr, nullptr);

rclcpp/test/rclcpp/executors/test_events_executor.cpp

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -52,12 +52,6 @@ TEST_F(TestEventsExecutor, notify_waitable)
5252
rcl_wait_set_t wait_set = rcl_get_zero_initialized_wait_set();
5353
EXPECT_THROW(notifier->add_to_wait_set(&wait_set), std::runtime_error);
5454
EXPECT_THROW(notifier->is_ready(&wait_set), std::runtime_error);
55-
56-
{
57-
auto mock = mocking_utils::patch_and_return(
58-
"lib:rclcpp", rcl_guard_condition_set_listener_callback, RCL_RET_ERROR);
59-
EXPECT_THROW(std::make_shared<EventsExecutor>(), std::runtime_error);
60-
}
6155
}
6256

6357
TEST_F(TestEventsExecutor, run_clients_servers)

rclcpp/test/rclcpp/executors/test_events_executor_entities_collector.cpp

Lines changed: 0 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -156,23 +156,3 @@ TEST_F(TestEventsExecutorEntitiesCollector, remove_node_opposite_order)
156156

157157
EXPECT_NO_THROW(entities_collector_->remove_node(node2->get_node_base_interface()));
158158
}
159-
160-
TEST_F(TestEventsExecutorEntitiesCollector, test_rcl_exception)
161-
{
162-
auto node1 = std::make_shared<rclcpp::Node>("node1", "ns");
163-
auto node2 = std::make_shared<rclcpp::Node>("node2", "ns");
164-
entities_collector_->add_node(node1->get_node_base_interface());
165-
166-
{
167-
auto mock = mocking_utils::patch_and_return(
168-
"lib:rclcpp", rcl_guard_condition_set_listener_callback, RCL_RET_ERROR);
169-
170-
EXPECT_THROW(
171-
entities_collector_->add_node(node2->get_node_base_interface()),
172-
std::runtime_error);
173-
174-
EXPECT_THROW(
175-
entities_collector_->remove_node(node1->get_node_base_interface()),
176-
std::runtime_error);
177-
}
178-
}

0 commit comments

Comments
 (0)