Skip to content

Commit ff41c31

Browse files
committed
Pass rcl_serialized_msg pointer properly
Signed-off-by: Abrar Rahman Protyasha <[email protected]>
1 parent 6460754 commit ff41c31

File tree

3 files changed

+13
-10
lines changed

3 files changed

+13
-10
lines changed

src/domain_bridge/domain_bridge.cpp

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -191,7 +191,9 @@ class DomainBridgeImpl
191191
compressed_msg.data = domain_bridge::compress_message(cctx, std::move(*msg));
192192
rclcpp::SerializedMessage serialized_compressed_msg;
193193
serializer.serialize_message(&compressed_msg, &serialized_compressed_msg);
194-
publisher->publish(serialized_compressed_msg.get_rcl_serialized_message());
194+
auto serialized_data_ptr = std::make_shared<rcl_serialized_message_t>(
195+
serialized_compressed_msg.get_rcl_serialized_message());
196+
publisher->publish(serialized_data_ptr);
195197
};
196198
break;
197199
case DomainBridgeOptions::Mode::Decompress:
@@ -206,14 +208,18 @@ class DomainBridgeImpl
206208
serializer.deserialize_message(serialized_compressed_msg.get(), &compressed_msg);
207209
rclcpp::SerializedMessage msg = domain_bridge::decompress_message(
208210
dctx, std::move(compressed_msg.data));
209-
publisher->publish(msg.get_rcl_serialized_message());
211+
auto serialized_data_ptr = std::make_shared<rcl_serialized_message_t>(
212+
msg.get_rcl_serialized_message());
213+
publisher->publish(serialized_data_ptr);
210214
};
211215
break;
212216
default: // fallthrough
213217
case DomainBridgeOptions::Mode::Normal:
214218
callback = [publisher](std::shared_ptr<rclcpp::SerializedMessage> msg) {
215219
// Publish message into the other domain
216-
publisher->publish(msg->get_rcl_serialized_message());
220+
auto serialized_data_ptr = std::make_shared<rcl_serialized_message_t>(
221+
msg->get_rcl_serialized_message());
222+
publisher->publish(serialized_data_ptr);
217223
};
218224
break;
219225
}
@@ -233,10 +239,7 @@ class DomainBridgeImpl
233239
*rosidl_typesupport_cpp::get_message_type_support_handle<domain_bridge::msg::CompressedMsg>(),
234240
topic_name,
235241
qos,
236-
[publisher](std::shared_ptr<rclcpp::SerializedMessage> msg) {
237-
// Publish message into the other domain
238-
publisher->publish(msg->get_rcl_serialized_message());
239-
});
242+
callback);
240243
node->get_node_topics_interface()->add_subscription(subscription, std::move(group));
241244
return subscription;
242245
}

src/domain_bridge/generic_publisher.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -42,10 +42,10 @@ GenericPublisher::GenericPublisher(
4242
: rclcpp::PublisherBase(node_base, topic_name, type_support, rosbag2_get_publisher_options(qos))
4343
{}
4444

45-
void GenericPublisher::publish(const rmw_serialized_message_t & message)
45+
void GenericPublisher::publish(std::shared_ptr<rmw_serialized_message_t> message)
4646
{
4747
auto return_code = rcl_publish_serialized_message(
48-
get_publisher_handle().get(), &message, nullptr);
48+
get_publisher_handle().get(), message.get(), NULL);
4949

5050
if (return_code != RCL_RET_OK) {
5151
rclcpp::exceptions::throw_from_rcl_error(return_code, "failed to publish serialized message");

src/domain_bridge/generic_publisher.hpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ class GenericPublisher : public rclcpp::PublisherBase
3838

3939
virtual ~GenericPublisher() = default;
4040

41-
void publish(const rmw_serialized_message_t & message);
41+
void publish(std::shared_ptr<rmw_serialized_message_t> message);
4242
};
4343

4444
} // namespace domain_bridge

0 commit comments

Comments
 (0)