From af0a83a7f6fbfeb523242354fcd16f7a00155c15 Mon Sep 17 00:00:00 2001 From: h-suzuki Date: Wed, 17 Jan 2024 18:05:46 +0900 Subject: [PATCH 1/9] Add: tracepoint for generic_publisher Signed-off-by: h-suzuki --- rmw_cyclonedds_cpp/src/rmw_node.cpp | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/rmw_cyclonedds_cpp/src/rmw_node.cpp b/rmw_cyclonedds_cpp/src/rmw_node.cpp index c83727fd..f28573ac 100644 --- a/rmw_cyclonedds_cpp/src/rmw_node.cpp +++ b/rmw_cyclonedds_cpp/src/rmw_node.cpp @@ -2024,6 +2024,7 @@ extern "C" rmw_ret_t rmw_publish_serialized_message( serialized_message, "serialized message handle is null", return RMW_RET_INVALID_ARGUMENT); auto pub = static_cast(publisher->data); + TRACETOOLS_TRACEPOINT(rmw_publish, serialized_message); struct ddsi_serdata * d = serdata_rmw_from_serialized_message( pub->sertype, serialized_message->buffer, serialized_message->buffer_length); @@ -3506,7 +3507,12 @@ static rmw_ret_t rmw_take_ser_int( if (message_info) { message_info_from_sample_info(info, message_info); } - + TRACETOOLS_TRACEPOINT( + rmw_take, + static_cast(subscription), + static_cast(serialized_message), + (message_info ? message_info->source_timestamp : 0LL), + *taken); // taking a serialized msg from shared memory #ifdef DDS_HAS_SHM if (d->iox_chunk != nullptr) { From 9b804c2ca1c181f4bc64636f21400e237e0926c8 Mon Sep 17 00:00:00 2001 From: h-suzuki Date: Fri, 26 Jan 2024 09:28:58 +0000 Subject: [PATCH 2/9] Fix: correspond to PR454 Signed-off-by: h-suzuki --- rmw_cyclonedds_cpp/src/rmw_node.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/rmw_cyclonedds_cpp/src/rmw_node.cpp b/rmw_cyclonedds_cpp/src/rmw_node.cpp index f28573ac..d23162d2 100644 --- a/rmw_cyclonedds_cpp/src/rmw_node.cpp +++ b/rmw_cyclonedds_cpp/src/rmw_node.cpp @@ -2024,7 +2024,8 @@ extern "C" rmw_ret_t rmw_publish_serialized_message( serialized_message, "serialized message handle is null", return RMW_RET_INVALID_ARGUMENT); auto pub = static_cast(publisher->data); - TRACETOOLS_TRACEPOINT(rmw_publish, serialized_message); + const dds_time_t tstamp = dds_time(); + TRACETOOLS_TRACEPOINT(rmw_publish, (const void *)publisher, serialized_message, tstamp); struct ddsi_serdata * d = serdata_rmw_from_serialized_message( pub->sertype, serialized_message->buffer, serialized_message->buffer_length); From 65ce70de01da1efd5061e465832d8ab8d2c49a15 Mon Sep 17 00:00:00 2001 From: h-suzuki Date: Tue, 5 Mar 2024 08:58:47 +0000 Subject: [PATCH 3/9] Fix: rmw_publish and rmw_take output press the same timestamp Signed-off-by: h-suzuki --- rmw_cyclonedds_cpp/src/rmw_node.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/rmw_cyclonedds_cpp/src/rmw_node.cpp b/rmw_cyclonedds_cpp/src/rmw_node.cpp index d23162d2..94a6a8d9 100644 --- a/rmw_cyclonedds_cpp/src/rmw_node.cpp +++ b/rmw_cyclonedds_cpp/src/rmw_node.cpp @@ -2024,11 +2024,12 @@ extern "C" rmw_ret_t rmw_publish_serialized_message( serialized_message, "serialized message handle is null", return RMW_RET_INVALID_ARGUMENT); auto pub = static_cast(publisher->data); - const dds_time_t tstamp = dds_time(); + const dds_time_t tstamp = dds_time(); TRACETOOLS_TRACEPOINT(rmw_publish, (const void *)publisher, serialized_message, tstamp); struct ddsi_serdata * d = serdata_rmw_from_serialized_message( pub->sertype, serialized_message->buffer, serialized_message->buffer_length); + d->timestamp.v = tstamp; #ifdef DDS_HAS_SHM // publishing a serialized message when SHM is available From 79d1e62419cc4f4e95e8de8d63f788d5e790ac8b Mon Sep 17 00:00:00 2001 From: h-suzuki Date: Fri, 8 Mar 2024 02:41:57 +0000 Subject: [PATCH 4/9] Fix: code style Signed-off-by: h-suzuki --- rmw_cyclonedds_cpp/src/rmw_node.cpp | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/rmw_cyclonedds_cpp/src/rmw_node.cpp b/rmw_cyclonedds_cpp/src/rmw_node.cpp index 94a6a8d9..bc980725 100644 --- a/rmw_cyclonedds_cpp/src/rmw_node.cpp +++ b/rmw_cyclonedds_cpp/src/rmw_node.cpp @@ -3509,12 +3509,12 @@ static rmw_ret_t rmw_take_ser_int( if (message_info) { message_info_from_sample_info(info, message_info); } - TRACETOOLS_TRACEPOINT( - rmw_take, - static_cast(subscription), - static_cast(serialized_message), - (message_info ? message_info->source_timestamp : 0LL), - *taken); + TRACETOOLS_TRACEPOINT( + rmw_take, + static_cast(subscription), + static_cast(serialized_message), + (message_info ? message_info->source_timestamp : 0LL), + *taken); // taking a serialized msg from shared memory #ifdef DDS_HAS_SHM if (d->iox_chunk != nullptr) { From 75f4f2d269b749bc11d37ef146995ed0c9a874f9 Mon Sep 17 00:00:00 2001 From: h-suzuki Date: Fri, 8 Mar 2024 09:55:14 +0000 Subject: [PATCH 5/9] Fix: tracepoint is output just before RMW_RET_OK Signed-off-by: h-suzuki --- rmw_cyclonedds_cpp/src/rmw_node.cpp | 30 +++++++++++++++++++++++------ 1 file changed, 24 insertions(+), 6 deletions(-) diff --git a/rmw_cyclonedds_cpp/src/rmw_node.cpp b/rmw_cyclonedds_cpp/src/rmw_node.cpp index bc980725..bd100a23 100644 --- a/rmw_cyclonedds_cpp/src/rmw_node.cpp +++ b/rmw_cyclonedds_cpp/src/rmw_node.cpp @@ -3509,12 +3509,6 @@ static rmw_ret_t rmw_take_ser_int( if (message_info) { message_info_from_sample_info(info, message_info); } - TRACETOOLS_TRACEPOINT( - rmw_take, - static_cast(subscription), - static_cast(serialized_message), - (message_info ? message_info->source_timestamp : 0LL), - *taken); // taking a serialized msg from shared memory #ifdef DDS_HAS_SHM if (d->iox_chunk != nullptr) { @@ -3530,6 +3524,12 @@ static rmw_ret_t rmw_take_ser_int( serialized_message->buffer_length = size; ddsi_serdata_unref(d); *taken = true; + TRACETOOLS_TRACEPOINT( + rmw_take, + static_cast(subscription), + static_cast(serialized_message), + (message_info ? message_info->source_timestamp : 0LL), + *taken); return RMW_RET_OK; } else if (iox_header->shm_data_state == IOX_CHUNK_CONTAINS_RAW_DATA) { if (rmw_serialize(d->iox_chunk, &sub->type_supports, serialized_message) != RMW_RET_OK) { @@ -3540,6 +3540,12 @@ static rmw_ret_t rmw_take_ser_int( } ddsi_serdata_unref(d); *taken = true; + TRACETOOLS_TRACEPOINT( + rmw_take, + static_cast(subscription), + static_cast(serialized_message), + (message_info ? message_info->source_timestamp : 0LL), + *taken); return RMW_RET_OK; } else { RMW_SET_ERROR_MSG("The recieved sample over SHM is not initialized"); @@ -3561,12 +3567,24 @@ static rmw_ret_t rmw_take_ser_int( serialized_message->buffer_length = size; ddsi_serdata_unref(d); *taken = true; + TRACETOOLS_TRACEPOINT( + rmw_take, + static_cast(subscription), + static_cast(serialized_message), + (message_info ? message_info->source_timestamp : 0LL), + *taken); return RMW_RET_OK; } } ddsi_serdata_unref(d); } *taken = false; + TRACETOOLS_TRACEPOINT( + rmw_take, + static_cast(subscription), + static_cast(serialized_message), + (message_info ? message_info->source_timestamp : 0LL), + *taken); return RMW_RET_OK; } From 7b71aefee6ec13fbd44aa7da9b57abe2f6a28057 Mon Sep 17 00:00:00 2001 From: h-suzuki Date: Tue, 12 Mar 2024 04:44:04 +0000 Subject: [PATCH 6/9] Fix: reset sourcestamp in rmw_publish_serialized_message Signed-off-by: h-suzuki --- rmw_cyclonedds_cpp/src/rmw_node.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rmw_cyclonedds_cpp/src/rmw_node.cpp b/rmw_cyclonedds_cpp/src/rmw_node.cpp index bd100a23..aa549794 100644 --- a/rmw_cyclonedds_cpp/src/rmw_node.cpp +++ b/rmw_cyclonedds_cpp/src/rmw_node.cpp @@ -2043,7 +2043,7 @@ extern "C" rmw_ret_t rmw_publish_serialized_message( } #endif - const bool ok = (dds_writecdr(pub->enth, d) >= 0); + const bool ok = (dds_forwardcdr(pub->enth, d) >= 0); return ok ? RMW_RET_OK : RMW_RET_ERROR; } From 2f911e7298fa4fe18e0acccb8f27926aade737c1 Mon Sep 17 00:00:00 2001 From: h-suzuki Date: Tue, 12 Mar 2024 10:51:05 +0000 Subject: [PATCH 7/9] Fix: add statusinfo Signed-off-by: h-suzuki --- rmw_cyclonedds_cpp/src/rmw_node.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/rmw_cyclonedds_cpp/src/rmw_node.cpp b/rmw_cyclonedds_cpp/src/rmw_node.cpp index aa549794..61761d4d 100644 --- a/rmw_cyclonedds_cpp/src/rmw_node.cpp +++ b/rmw_cyclonedds_cpp/src/rmw_node.cpp @@ -2030,6 +2030,7 @@ extern "C" rmw_ret_t rmw_publish_serialized_message( struct ddsi_serdata * d = serdata_rmw_from_serialized_message( pub->sertype, serialized_message->buffer, serialized_message->buffer_length); d->timestamp.v = tstamp; + d->statusinfo = 0; #ifdef DDS_HAS_SHM // publishing a serialized message when SHM is available From 4569662dd9e5554d26ce8a3ef75b9943d90dc67a Mon Sep 17 00:00:00 2001 From: h-suzuki-isp <146712054+h-suzuki-isp@users.noreply.github.com> Date: Thu, 14 Mar 2024 19:04:24 +0900 Subject: [PATCH 8/9] Update rmw_cyclonedds_cpp/src/rmw_node.cpp Co-authored-by: eboasson Signed-off-by: h-suzuki-isp <146712054+h-suzuki-isp@users.noreply.github.com> --- rmw_cyclonedds_cpp/src/rmw_node.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rmw_cyclonedds_cpp/src/rmw_node.cpp b/rmw_cyclonedds_cpp/src/rmw_node.cpp index 61761d4d..c040a6e0 100644 --- a/rmw_cyclonedds_cpp/src/rmw_node.cpp +++ b/rmw_cyclonedds_cpp/src/rmw_node.cpp @@ -3584,7 +3584,7 @@ static rmw_ret_t rmw_take_ser_int( rmw_take, static_cast(subscription), static_cast(serialized_message), - (message_info ? message_info->source_timestamp : 0LL), + 0LL, *taken); return RMW_RET_OK; } From 2b33c0bea1e4045d5f8c86ee2184b16f297c6b99 Mon Sep 17 00:00:00 2001 From: h-suzuki-isp Date: Fri, 5 Apr 2024 11:17:37 +0900 Subject: [PATCH 9/9] Fix: unnecesary whiteapace change Signed-off-by: h-suzuki-isp --- rmw_cyclonedds_cpp/src/rmw_node.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/rmw_cyclonedds_cpp/src/rmw_node.cpp b/rmw_cyclonedds_cpp/src/rmw_node.cpp index c040a6e0..a50294d3 100644 --- a/rmw_cyclonedds_cpp/src/rmw_node.cpp +++ b/rmw_cyclonedds_cpp/src/rmw_node.cpp @@ -3510,6 +3510,7 @@ static rmw_ret_t rmw_take_ser_int( if (message_info) { message_info_from_sample_info(info, message_info); } + // taking a serialized msg from shared memory #ifdef DDS_HAS_SHM if (d->iox_chunk != nullptr) {