Skip to content

Commit f510db1

Browse files
authored
Add tracepoint for generic publisher/subscriber (#2448)
Signed-off-by: h-suzuki <[email protected]>
1 parent c5bc4b6 commit f510db1

File tree

4 files changed

+25
-11
lines changed

4 files changed

+25
-11
lines changed

rclcpp/include/rclcpp/generic_subscription.hpp

+16-10
Original file line numberDiff line numberDiff line change
@@ -84,13 +84,22 @@ class GenericSubscription : public rclcpp::SubscriptionBase
8484
options.event_callbacks,
8585
options.use_default_callbacks,
8686
DeliveredMessageKind::SERIALIZED_MESSAGE),
87-
callback_([callback](
88-
std::shared_ptr<const rclcpp::SerializedMessage> serialized_message,
89-
const rclcpp::MessageInfo & message_info) mutable {
90-
callback.dispatch(serialized_message, message_info);
91-
}),
87+
any_callback_(callback),
9288
ts_lib_(ts_lib)
93-
{}
89+
{
90+
TRACETOOLS_TRACEPOINT(
91+
rclcpp_subscription_init,
92+
static_cast<const void *>(get_subscription_handle().get()),
93+
static_cast<const void *>(this));
94+
TRACETOOLS_TRACEPOINT(
95+
rclcpp_subscription_callback_added,
96+
static_cast<const void *>(this),
97+
static_cast<const void *>(&any_callback_));
98+
99+
#ifndef TRACETOOLS_DISABLED
100+
any_callback_.register_callback_for_tracing();
101+
#endif
102+
}
94103

95104
RCLCPP_PUBLIC
96105
virtual ~GenericSubscription() = default;
@@ -153,10 +162,7 @@ class GenericSubscription : public rclcpp::SubscriptionBase
153162

154163
private:
155164
RCLCPP_DISABLE_COPY(GenericSubscription)
156-
157-
std::function<void(
158-
std::shared_ptr<const rclcpp::SerializedMessage>,
159-
const rclcpp::MessageInfo)> callback_;
165+
AnySubscriptionCallback<rclcpp::SerializedMessage, std::allocator<void>> any_callback_;
160166
// The type support library should stay loaded, so it is stored in the GenericSubscription
161167
std::shared_ptr<rcpputils::SharedLibrary> ts_lib_;
162168
};

rclcpp/src/rclcpp/generic_publisher.cpp

+5
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,10 @@ namespace rclcpp
2323

2424
void GenericPublisher::publish(const rclcpp::SerializedMessage & message)
2525
{
26+
TRACETOOLS_TRACEPOINT(
27+
rclcpp_publish,
28+
nullptr,
29+
static_cast<const void *>(&message.get_rcl_serialized_message()));
2630
auto return_code = rcl_publish_serialized_message(
2731
get_publisher_handle().get(), &message.get_rcl_serialized_message(), NULL);
2832

@@ -68,6 +72,7 @@ void GenericPublisher::deserialize_message(
6872

6973
void GenericPublisher::publish_loaned_message(void * loaned_message)
7074
{
75+
TRACETOOLS_TRACEPOINT(rclcpp_publish, nullptr, static_cast<const void *>(loaned_message));
7176
auto return_code = rcl_publish_loaned_message(
7277
get_publisher_handle().get(), loaned_message, NULL);
7378

rclcpp/src/rclcpp/generic_subscription.cpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ GenericSubscription::handle_serialized_message(
5151
const std::shared_ptr<rclcpp::SerializedMessage> & message,
5252
const rclcpp::MessageInfo & message_info)
5353
{
54-
callback_(message, message_info);
54+
any_callback_.dispatch(message, message_info);
5555
}
5656

5757
void

rclcpp/src/rclcpp/subscription_base.cpp

+3
Original file line numberDiff line numberDiff line change
@@ -244,6 +244,9 @@ SubscriptionBase::take_serialized(
244244
&message_out.get_rcl_serialized_message(),
245245
&message_info_out.get_rmw_message_info(),
246246
nullptr);
247+
TRACETOOLS_TRACEPOINT(
248+
rclcpp_take,
249+
static_cast<const void *>(&message_out.get_rcl_serialized_message()));
247250
if (RCL_RET_SUBSCRIPTION_TAKE_FAILED == ret) {
248251
return false;
249252
} else if (RCL_RET_OK != ret) {

0 commit comments

Comments
 (0)