Skip to content

Commit 3273e98

Browse files
committed
save copy if timestamp is not included in ros2 version
1 parent a98e5cb commit 3273e98

File tree

1 file changed

+11
-9
lines changed

1 file changed

+11
-9
lines changed

mqtt_client/src/MqttClient.ros2.cpp

Lines changed: 11 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -577,21 +577,23 @@ void MqttClient::ros2mqtt(
577577
uint32_t payload_length = msg_length;
578578
uint32_t msg_offset = 0;
579579
if (ros2mqtt.stamped) {
580+
580581
// allocate buffer with appropriate size to hold [S, R]
581582
msg_offset += stamp_length_;
582583
payload_length += stamp_length_;
583584
payload_buffer.resize(payload_length);
585+
586+
// copy serialized ROS message to payload [-, R]
587+
std::copy(serialized_msg->get_rcl_serialized_message().buffer,
588+
serialized_msg->get_rcl_serialized_message().buffer + msg_length,
589+
payload_buffer.begin() + msg_offset);
584590
} else {
585-
// allocate buffer with appropriate size to hold [R]
586-
payload_buffer.resize(payload_length);
587-
}
588591

589-
// TODO: if not stamped, could create payload_buffer directly on top of
590-
// serialized_msg->get_rcl_serialized_message().buffer copy serialized ROS
591-
// message to payload [-, R]
592-
std::copy(serialized_msg->get_rcl_serialized_message().buffer,
593-
serialized_msg->get_rcl_serialized_message().buffer + msg_length,
594-
payload_buffer.begin() + msg_offset);
592+
// directly build payload buffer on top of serialized message
593+
payload_buffer = std::vector<uint8_t>(
594+
serialized_msg->get_rcl_serialized_message().buffer,
595+
serialized_msg->get_rcl_serialized_message().buffer + msg_length);
596+
}
595597

596598
// inject timestamp as final step
597599
if (ros2mqtt.stamped) {

0 commit comments

Comments
 (0)