Skip to content

Commit a298ef5

Browse files
committed
Refactor dynamic typesupport to couple serialization support to objects
Signed-off-by: methylDragon <[email protected]>
1 parent 0a45133 commit a298ef5

File tree

8 files changed

+9
-21
lines changed

8 files changed

+9
-21
lines changed

rclcpp/include/rclcpp/dynamic_subscription.hpp

Lines changed: 5 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -53,11 +53,10 @@ class DynamicSubscription : public rclcpp::SubscriptionBase
5353
rosidl_message_type_support_t & type_support_handle,
5454
const std::string & topic_name,
5555
const rclcpp::QoS & qos,
56-
// TODO(methylDragons): Eventually roll out an rclcpp::DynamicData that encompasses the serialization_support
57-
// support and DynamicData, and pass that to the callback
58-
std::function<void(
59-
std::shared_ptr<rosidl_dynamic_typesupport_serialization_support_t>, std::shared_ptr<rosidl_dynamic_typesupport_dynamic_data_t>
60-
)> callback,
56+
// TODO(methylDragons): Eventually roll out an rclcpp::DynamicMessage that encompasses the
57+
// serialization_support support and DynamicData, and pass that to the
58+
// callback
59+
std::function<void(std::shared_ptr<rosidl_dynamic_typesupport_dynamic_data_t>)> callback,
6160
const rclcpp::SubscriptionOptionsWithAllocator<AllocatorT> & options,
6261
bool use_take_dynamic_message = false)
6362
: SubscriptionBase(
@@ -161,7 +160,6 @@ class DynamicSubscription : public rclcpp::SubscriptionBase
161160

162161
RCLCPP_PUBLIC
163162
void handle_dynamic_message(
164-
const std::shared_ptr<rosidl_dynamic_typesupport_serialization_support_t> & serialization_support,
165163
const std::shared_ptr<rosidl_dynamic_typesupport_dynamic_data_t> & dyn_data,
166164
const rclcpp::MessageInfo & message_info
167165
) override;
@@ -171,10 +169,7 @@ class DynamicSubscription : public rclcpp::SubscriptionBase
171169
RCLCPP_DISABLE_COPY(DynamicSubscription)
172170

173171
rosidl_message_type_support_t & ts_;
174-
175-
std::function<void(
176-
std::shared_ptr<rosidl_dynamic_typesupport_serialization_support_t>, std::shared_ptr<rosidl_dynamic_typesupport_dynamic_data_t>
177-
)> callback_;
172+
std::function<void(std::shared_ptr<rosidl_dynamic_typesupport_dynamic_data_t>)> callback_;
178173
};
179174

180175
} // namespace rclcpp

rclcpp/include/rclcpp/generic_subscription.hpp

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -137,7 +137,6 @@ class GenericSubscription : public rclcpp::SubscriptionBase
137137

138138
RCLCPP_PUBLIC
139139
void handle_dynamic_message(
140-
const std::shared_ptr<rosidl_dynamic_typesupport_serialization_support_t> & serialization_support,
141140
const std::shared_ptr<rosidl_dynamic_typesupport_dynamic_data_t> & dyn_data,
142141
const rclcpp::MessageInfo & message_info) override;
143142

rclcpp/include/rclcpp/subscription.hpp

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -414,11 +414,9 @@ class Subscription : public SubscriptionBase
414414

415415
void
416416
handle_dynamic_message(
417-
const std::shared_ptr<rosidl_dynamic_typesupport_serialization_support_t> & serialization_support,
418417
const std::shared_ptr<rosidl_dynamic_typesupport_dynamic_data_t> & dyn_data,
419418
const rclcpp::MessageInfo & message_info) override
420419
{
421-
(void) serialization_support;
422420
(void) dyn_data;
423421
(void) message_info;
424422
throw rclcpp::exceptions::UnimplementedError(

rclcpp/include/rclcpp/subscription_base.hpp

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -563,7 +563,6 @@ class SubscriptionBase : public std::enable_shared_from_this<SubscriptionBase>
563563
virtual
564564
void
565565
handle_dynamic_message(
566-
const std::shared_ptr<rosidl_dynamic_typesupport_serialization_support_t> & serialization_support,
567566
const std::shared_ptr<rosidl_dynamic_typesupport_dynamic_data_t> & dyn_data,
568567
const rclcpp::MessageInfo & message_info
569568
) = 0;

rclcpp/src/rclcpp/dynamic_subscription.cpp

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -84,7 +84,7 @@ DynamicSubscription::get_dynamic_type()
8484
// NOTE(methylDragon): Should we store a separate copy of dynamic data in the sub so it isn't tied
8585
// to the typesupport instead?
8686
// If that's the case, will there ever be a lifetime contention between a sub
87-
// that manages the data and the callback/user usage of the data?
87+
// that manages the data and the callback/user usage of the data?
8888
std::shared_ptr<rosidl_dynamic_typesupport_dynamic_data_t>
8989
DynamicSubscription::get_dynamic_data()
9090
{
@@ -107,11 +107,10 @@ std::shared_ptr<rosidl_dynamic_typesupport_serialization_support_t> DynamicSubsc
107107
};
108108

109109
void DynamicSubscription::handle_dynamic_message(
110-
const std::shared_ptr<rosidl_dynamic_typesupport_serialization_support_t> & serialization_support,
111110
const std::shared_ptr<rosidl_dynamic_typesupport_dynamic_data_t> & dyn_data,
112111
const rclcpp::MessageInfo &)
113112
{
114-
callback_(serialization_support, dyn_data);
113+
callback_(dyn_data);
115114
}
116115

117116
} // namespace rclcpp

rclcpp/src/rclcpp/executor.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -637,7 +637,7 @@ Executor::execute_subscription(rclcpp::SubscriptionBase::SharedPtr subscription)
637637
if (ret != RMW_RET_OK) {
638638
throw_from_rcl_error(ret, "Couldn't convert serialized message to dynamic data!");
639639
}
640-
subscription->handle_dynamic_message(serialization_support, dyn_data, message_info);
640+
subscription->handle_dynamic_message(dyn_data, message_info);
641641
}
642642
);
643643
subscription->return_serialized_message(serialized_msg);

rclcpp/src/rclcpp/generic_subscription.cpp

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -97,11 +97,9 @@ GenericSubscription::get_serialization_support()
9797

9898
void
9999
GenericSubscription::handle_dynamic_message(
100-
const std::shared_ptr<rosidl_dynamic_typesupport_serialization_support_t> & serialization_support,
101100
const std::shared_ptr<rosidl_dynamic_typesupport_dynamic_data_t> & dyn_data,
102101
const rclcpp::MessageInfo & message_info)
103102
{
104-
(void) serialization_support;
105103
(void) dyn_data;
106104
(void) message_info;
107105
throw rclcpp::exceptions::UnimplementedError(

rclcpp/test/rclcpp/node_interfaces/test_node_topics.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -82,7 +82,7 @@ class TestSubscription : public rclcpp::SubscriptionBase
8282
std::shared_ptr<rosidl_dynamic_typesupport_dynamic_data_t> get_dynamic_data() override {return nullptr;}
8383
std::shared_ptr<rosidl_dynamic_typesupport_serialization_support_t> get_serialization_support() override {return nullptr;}
8484
void handle_dynamic_message(
85-
const std::shared_ptr<rosidl_dynamic_typesupport_serialization_support_t> &, const std::shared_ptr<rosidl_dynamic_typesupport_dynamic_data_t> &,
85+
const std::shared_ptr<rosidl_dynamic_typesupport_dynamic_data_t> &,
8686
const rclcpp::MessageInfo &) override {}
8787
};
8888

0 commit comments

Comments
 (0)