Skip to content

Commit 0194fb7

Browse files
committed
Remove some more "empty" implementations.
In particular, these are implementations in the Waitable class that only throw exceptions. Rather than do this, make these APIs pure virtual so all downstream classes have to implement them. All of the current users (except for tests) do anyway, and it makes the API much cleaner. Signed-off-by: Chris Lalancette <clalancette@gmail.com>
1 parent 5b3f59e commit 0194fb7

9 files changed

Lines changed: 44 additions & 57 deletions

File tree

rclcpp/include/rclcpp/waitable.hpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -176,7 +176,7 @@ class Waitable
176176
RCLCPP_PUBLIC
177177
virtual
178178
std::shared_ptr<void>
179-
take_data_by_entity_id(size_t id);
179+
take_data_by_entity_id(size_t id) = 0;
180180

181181
/// Execute data that is passed in.
182182
/**
@@ -246,7 +246,7 @@ class Waitable
246246
RCLCPP_PUBLIC
247247
virtual
248248
void
249-
set_on_ready_callback(std::function<void(size_t, int)> callback);
249+
set_on_ready_callback(std::function<void(size_t, int)> callback) = 0;
250250

251251
/// Unset any callback registered via set_on_ready_callback.
252252
/**
@@ -256,7 +256,7 @@ class Waitable
256256
RCLCPP_PUBLIC
257257
virtual
258258
void
259-
clear_on_ready_callback();
259+
clear_on_ready_callback() = 0;
260260

261261
private:
262262
std::atomic<bool> in_use_by_wait_set_{false};

rclcpp/src/rclcpp/waitable.cpp

Lines changed: 0 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -54,35 +54,8 @@ Waitable::get_number_of_ready_guard_conditions()
5454
return 0u;
5555
}
5656

57-
std::shared_ptr<void>
58-
Waitable::take_data_by_entity_id(size_t id)
59-
{
60-
(void)id;
61-
throw std::runtime_error(
62-
"Custom waitables should override take_data_by_entity_id "
63-
"if they want to use it.");
64-
}
65-
6657
bool
6758
Waitable::exchange_in_use_by_wait_set_state(bool in_use_state)
6859
{
6960
return in_use_by_wait_set_.exchange(in_use_state);
7061
}
71-
72-
void
73-
Waitable::set_on_ready_callback(std::function<void(size_t, int)> callback)
74-
{
75-
(void)callback;
76-
77-
throw std::runtime_error(
78-
"Custom waitables should override set_on_ready_callback "
79-
"if they want to use it.");
80-
}
81-
82-
void
83-
Waitable::clear_on_ready_callback()
84-
{
85-
throw std::runtime_error(
86-
"Custom waitables should override clear_on_ready_callback if they "
87-
"want to use it and make sure to call it on the waitable destructor.");
88-
}

rclcpp/test/rclcpp/node_interfaces/test_node_waitables.cpp

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -31,13 +31,13 @@ class TestWaitable : public rclcpp::Waitable
3131
void add_to_wait_set(rcl_wait_set_t &) override {}
3232
bool is_ready(const rcl_wait_set_t &) override {return false;}
3333

34-
std::shared_ptr<void>
35-
take_data() override
36-
{
37-
return nullptr;
38-
}
39-
34+
std::shared_ptr<void> take_data() override {return nullptr;}
4035
void execute(const std::shared_ptr<void> &) override {}
36+
37+
void set_on_ready_callback(std::function<void(size_t, int)>) override {}
38+
void clear_on_ready_callback() override {}
39+
40+
std::shared_ptr<void> take_data_by_entity_id(size_t) override {return nullptr;}
4141
};
4242

4343
class TestNodeWaitables : public ::testing::Test

rclcpp/test/rclcpp/strategies/test_allocator_memory_strategy.cpp

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -51,13 +51,13 @@ class TestWaitable : public rclcpp::Waitable
5151
return test_waitable_result;
5252
}
5353

54-
std::shared_ptr<void>
55-
take_data() override
56-
{
57-
return nullptr;
58-
}
59-
54+
std::shared_ptr<void> take_data() override {return nullptr;}
6055
void execute(const std::shared_ptr<void> &) override {}
56+
57+
void set_on_ready_callback(std::function<void(size_t, int)>) override {}
58+
void clear_on_ready_callback() override {}
59+
60+
std::shared_ptr<void> take_data_by_entity_id(size_t) override {return nullptr;}
6161
};
6262

6363
struct RclWaitSetSizes

rclcpp/test/rclcpp/test_memory_strategy.cpp

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,11 @@ class TestWaitable : public rclcpp::Waitable
4040

4141
std::shared_ptr<void> take_data() override {return nullptr;}
4242
void execute(const std::shared_ptr<void> &) override {}
43+
44+
void set_on_ready_callback(std::function<void(size_t, int)>) override {}
45+
void clear_on_ready_callback() override {}
46+
47+
std::shared_ptr<void> take_data_by_entity_id(size_t) override {return nullptr;}
4348
};
4449

4550
class TestMemoryStrategy : public ::testing::Test

rclcpp/test/rclcpp/wait_set_policies/test_dynamic_storage.cpp

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -52,16 +52,18 @@ class TestWaitable : public rclcpp::Waitable
5252
: is_ready_(false) {}
5353

5454
void add_to_wait_set(rcl_wait_set_t &) override {}
55-
5655
bool is_ready(const rcl_wait_set_t &) override {return is_ready_;}
5756

5857
std::shared_ptr<void> take_data() override {return nullptr;}
59-
60-
void
61-
execute(const std::shared_ptr<void> &) override {}
58+
void execute(const std::shared_ptr<void> &) override {}
6259

6360
void set_is_ready(bool value) {is_ready_ = value;}
6461

62+
void set_on_ready_callback(std::function<void(size_t, int)>) override {}
63+
void clear_on_ready_callback() override {}
64+
65+
std::shared_ptr<void> take_data_by_entity_id(size_t) override {return nullptr;}
66+
6567
private:
6668
bool is_ready_;
6769
};

rclcpp/test/rclcpp/wait_set_policies/test_static_storage.cpp

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -52,16 +52,18 @@ class TestWaitable : public rclcpp::Waitable
5252
: is_ready_(false) {}
5353

5454
void add_to_wait_set(rcl_wait_set_t &) override {}
55-
5655
bool is_ready(const rcl_wait_set_t &) override {return is_ready_;}
5756

5857
std::shared_ptr<void> take_data() override {return nullptr;}
59-
60-
void
61-
execute(const std::shared_ptr<void> &) override {}
58+
void execute(const std::shared_ptr<void> &) override {}
6259

6360
void set_is_ready(bool value) {is_ready_ = value;}
6461

62+
void set_on_ready_callback(std::function<void(size_t, int)>) override {}
63+
void clear_on_ready_callback() override {}
64+
65+
std::shared_ptr<void> take_data_by_entity_id(size_t) override {return nullptr;}
66+
6567
private:
6668
bool is_ready_;
6769
};

rclcpp/test/rclcpp/wait_set_policies/test_storage_policy_common.cpp

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -61,14 +61,17 @@ class TestWaitable : public rclcpp::Waitable
6161
bool is_ready(const rcl_wait_set_t &) override {return is_ready_;}
6262

6363
std::shared_ptr<void> take_data() override {return nullptr;}
64-
65-
void
66-
execute(const std::shared_ptr<void> & data) override {(void)data;}
64+
void execute(const std::shared_ptr<void> &) override {}
6765

6866
void set_is_ready(bool value) {is_ready_ = value;}
6967

7068
void set_add_to_wait_set(bool value) {add_to_wait_set_ = value;}
7169

70+
void set_on_ready_callback(std::function<void(size_t, int)>) override {}
71+
void clear_on_ready_callback() override {}
72+
73+
std::shared_ptr<void> take_data_by_entity_id(size_t) override {return nullptr;}
74+
7275
private:
7376
bool is_ready_;
7477
bool add_to_wait_set_;

rclcpp/test/rclcpp/wait_set_policies/test_thread_safe_synchronization.cpp

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -52,16 +52,18 @@ class TestWaitable : public rclcpp::Waitable
5252
: is_ready_(false) {}
5353

5454
void add_to_wait_set(rcl_wait_set_t &) override {}
55-
5655
bool is_ready(const rcl_wait_set_t &) override {return is_ready_;}
5756

5857
std::shared_ptr<void> take_data() override {return nullptr;}
59-
60-
void
61-
execute(const std::shared_ptr<void> &) override {}
58+
void execute(const std::shared_ptr<void> &) override {}
6259

6360
void set_is_ready(bool value) {is_ready_ = value;}
6461

62+
void set_on_ready_callback(std::function<void(size_t, int)>) override {}
63+
void clear_on_ready_callback() override {}
64+
65+
std::shared_ptr<void> take_data_by_entity_id(size_t) override {return nullptr;}
66+
6567
private:
6668
bool is_ready_;
6769
};

0 commit comments

Comments
 (0)