Skip to content

Commit 9da20f8

Browse files
committed
typedefs for all callback types
Signed-off-by: Emerson Knapp <[email protected]>
1 parent 36a6572 commit 9da20f8

File tree

2 files changed

+24
-28
lines changed

2 files changed

+24
-28
lines changed

rclcpp/include/rclcpp/dynamic_subscription.hpp

Lines changed: 15 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -37,13 +37,6 @@
3737
namespace rclcpp
3838
{
3939

40-
typedef std::variant<
41-
std::function<void (dynamic_typesupport::DynamicMessage::SharedPtr)>,
42-
std::function<void (dynamic_typesupport::DynamicMessage::SharedPtr, const MessageInfo &)>,
43-
std::function<void (std::shared_ptr<SerializedMessage>)>,
44-
std::function<void (std::shared_ptr<SerializedMessage>, const MessageInfo &)>
45-
> AnyDynamicSubscriptionCallback;
46-
4740
/// %Subscription for messages whose type descriptions are obtained at runtime.
4841
/**
4942
* Since the type is not known at compile time, this is not a template, and the dynamic library
@@ -54,6 +47,18 @@ typedef std::variant<
5447
class DynamicSubscription : public rclcpp::SubscriptionBase
5548
{
5649
public:
50+
typedef std::function<void (dynamic_typesupport::DynamicMessage::SharedPtr)> DynamicCallback;
51+
typedef std::function<void (dynamic_typesupport::DynamicMessage::SharedPtr,
52+
const MessageInfo &)> DynamicInfoCallback;
53+
typedef std::function<void (std::shared_ptr<SerializedMessage>)> SerializedCallback;
54+
typedef std::function<void (std::shared_ptr<SerializedMessage>,
55+
const MessageInfo &)> SerializedInfoCallback;
56+
57+
typedef std::variant<
58+
DynamicCallback, DynamicInfoCallback, SerializedCallback, SerializedInfoCallback
59+
> AnyCallback;
60+
61+
5762
// cppcheck-suppress unknownMacro
5863
RCLCPP_SMART_PTR_DEFINITIONS(DynamicSubscription)
5964

@@ -63,7 +68,7 @@ class DynamicSubscription : public rclcpp::SubscriptionBase
6368
rclcpp::dynamic_typesupport::DynamicMessageTypeSupport::SharedPtr type_support,
6469
const std::string & topic_name,
6570
const rclcpp::QoS & qos,
66-
AnyDynamicSubscriptionCallback callback,
71+
AnyCallback callback,
6772
const rclcpp::SubscriptionOptionsWithAllocator<AllocatorT> & options)
6873
: SubscriptionBase(
6974
node_base,
@@ -165,10 +170,10 @@ class DynamicSubscription : public rclcpp::SubscriptionBase
165170
private:
166171
RCLCPP_DISABLE_COPY(DynamicSubscription)
167172

168-
static bool is_callback_serialized(const rclcpp::AnyDynamicSubscriptionCallback &);
173+
static bool is_callback_serialized(const AnyCallback &);
169174

170175
rclcpp::dynamic_typesupport::DynamicMessageTypeSupport::SharedPtr ts_;
171-
rclcpp::AnyDynamicSubscriptionCallback callback_;
176+
AnyCallback callback_;
172177

173178
rclcpp::dynamic_typesupport::DynamicSerializationSupport::SharedPtr serialization_support_;
174179
rclcpp::dynamic_typesupport::DynamicMessage::SharedPtr dynamic_message_;

rclcpp/src/rclcpp/dynamic_subscription.cpp

Lines changed: 9 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -44,13 +44,10 @@ void DynamicSubscription::handle_serialized_message(
4444
const std::shared_ptr<rclcpp::SerializedMessage> & message,
4545
const rclcpp::MessageInfo & message_info)
4646
{
47-
using PlainCallback = std::function<void (std::shared_ptr<SerializedMessage>)>;
48-
using InfoCallback = std::function<
49-
void (std::shared_ptr<SerializedMessage>, const MessageInfo &)>;
50-
if (std::holds_alternative<PlainCallback>(callback_)) {
51-
std::get<PlainCallback>(callback_)(message);
47+
if (std::holds_alternative<DynamicSubscription::SerializedCallback>(callback_)) {
48+
std::get<DynamicSubscription::SerializedCallback>(callback_)(message);
5249
} else {
53-
std::get<InfoCallback>(callback_)(message, message_info);
50+
std::get<DynamicSubscription::SerializedInfoCallback>(callback_)(message, message_info);
5451
}
5552
}
5653

@@ -113,25 +110,19 @@ void DynamicSubscription::handle_dynamic_message(
113110
const rclcpp::dynamic_typesupport::DynamicMessage::SharedPtr & message,
114111
const rclcpp::MessageInfo & message_info)
115112
{
116-
using PlainCallback = std::function<void (dynamic_typesupport::DynamicMessage::SharedPtr)>;
117-
using InfoCallback = std::function<
118-
void (dynamic_typesupport::DynamicMessage::SharedPtr, const MessageInfo &)>;
119-
if (std::holds_alternative<PlainCallback>(callback_)) {
120-
std::get<PlainCallback>(callback_)(message);
113+
if (std::holds_alternative<DynamicSubscription::DynamicCallback>(callback_)) {
114+
std::get<DynamicSubscription::DynamicCallback>(callback_)(message);
121115
} else {
122-
std::get<InfoCallback>(callback_)(message, message_info);
116+
std::get<DynamicSubscription::DynamicInfoCallback>(callback_)(message, message_info);
123117
}
124118
}
125119

126120
bool DynamicSubscription::is_callback_serialized(
127-
const rclcpp::AnyDynamicSubscriptionCallback & callback)
121+
const DynamicSubscription::AnyCallback & callback)
128122
{
129-
using PlainCallback = std::function<void (std::shared_ptr<SerializedMessage>)>;
130-
using InfoCallback =
131-
std::function<void (std::shared_ptr<SerializedMessage>, const MessageInfo &)>;
132123
return
133-
std::holds_alternative<PlainCallback>(callback) ||
134-
std::holds_alternative<InfoCallback>(callback);
124+
std::holds_alternative<DynamicSubscription::SerializedCallback>(callback) ||
125+
std::holds_alternative<DynamicSubscription::SerializedInfoCallback>(callback);
135126
}
136127

137128
} // namespace rclcpp

0 commit comments

Comments
 (0)