diff --git a/src/modules/microdds_client/dds_topics.h.em b/src/modules/microdds_client/dds_topics.h.em index bde8b8d8cb..44e70d5e1c 100644 --- a/src/modules/microdds_client/dds_topics.h.em +++ b/src/modules/microdds_client/dds_topics.h.em @@ -37,6 +37,14 @@ struct SendTopicsSubs { uint32_t num_payload_sent{}; void update(uxrSession *session, uxrStreamId reliable_out_stream_id, uxrStreamId best_effort_stream_id, uxrObjectId participant_id, const char *client_namespace); + void reset(); +}; + +void SendTopicsSubs::reset() { + num_payload_sent = 0; +@[ for idx, pub in enumerate(publications)]@ + @(pub['topic_simple'])_data_writer = uxr_object_id(0, UXR_INVALID_ID); +@[ end for]@ }; void SendTopicsSubs::update(uxrSession *session, uxrStreamId reliable_out_stream_id, uxrStreamId best_effort_stream_id, uxrObjectId participant_id, const char *client_namespace) diff --git a/src/modules/microdds_client/microdds_client.cpp b/src/modules/microdds_client/microdds_client.cpp index 1c371da8cc..380ee6ee5a 100644 --- a/src/modules/microdds_client/microdds_client.cpp +++ b/src/modules/microdds_client/microdds_client.cpp @@ -371,6 +371,7 @@ void MicroddsClient::run() uxr_delete_session_retries(&session, _connected ? 1 : 0); _last_payload_tx_rate = 0; _last_payload_tx_rate = 0; + _subs->reset(); } }