Skip to content

Commit d60569a

Browse files
Update destroy behavior to use RMW_RET_TIMEOUT (#142) (#144)
* Update destroy behavior to use RMW_RET_TIMEOUT * Update topic destruction Fix (cherry picked from commit 9b24051) Co-authored-by: Pablo Garrido <pablogs9@gmail.com>
1 parent a546bbd commit d60569a

7 files changed

Lines changed: 19 additions & 18 deletions

File tree

rmw_microxrcedds_c/src/rmw_client.c

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -215,11 +215,9 @@ rmw_destroy_client(
215215
custom_client->client_id);
216216

217217
if (!run_xrce_session(custom_node->context, delete_client)) {
218-
result_ret = RMW_RET_ERROR;
219-
} else {
220-
rmw_uxrce_fini_client_memory(client);
221-
result_ret = RMW_RET_OK;
218+
result_ret = RMW_RET_TIMEOUT;
222219
}
220+
rmw_uxrce_fini_client_memory(client);
223221
}
224222

225223
return result_ret;

rmw_microxrcedds_c/src/rmw_microxrcedds_topic.c

Lines changed: 12 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -99,19 +99,22 @@ rmw_ret_t destroy_topic(
9999
rmw_uxrce_topic_t * topic)
100100
{
101101
rmw_ret_t result_ret = RMW_RET_OK;
102-
rmw_uxrce_node_t * custom_node = topic->owner_node;
102+
if (topic->owner_node != NULL) {
103+
rmw_uxrce_node_t * custom_node = topic->owner_node;
103104

104-
uint16_t delete_topic = uxr_buffer_delete_entity(
105-
&custom_node->context->session,
106-
*custom_node->context->creation_destroy_stream,
107-
topic->topic_id);
105+
uint16_t delete_topic = uxr_buffer_delete_entity(
106+
&custom_node->context->session,
107+
*custom_node->context->creation_destroy_stream,
108+
topic->topic_id);
108109

109-
if (!run_xrce_session(custom_node->context, delete_topic)) {
110-
result_ret = RMW_RET_ERROR;
111-
} else {
110+
if (!run_xrce_session(custom_node->context, delete_topic)) {
111+
result_ret = RMW_RET_TIMEOUT;
112+
}
112113
rmw_uxrce_fini_topic_memory(topic);
113-
result_ret = RMW_RET_OK;
114+
} else {
115+
result_ret = RMW_RET_ERROR;
114116
}
117+
115118
return result_ret;
116119
}
117120

rmw_microxrcedds_c/src/rmw_node.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -202,7 +202,7 @@ rmw_ret_t rmw_destroy_node(
202202
custom_node->participant_id);
203203

204204
if (!run_xrce_session(custom_node->context, delete_participant)) {
205-
ret = RMW_RET_ERROR;
205+
ret = RMW_RET_TIMEOUT;
206206
}
207207

208208
rmw_uxrce_fini_node_memory(node);

rmw_microxrcedds_c/src/rmw_publisher.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -369,7 +369,7 @@ rmw_destroy_publisher(
369369
bool ret = run_xrce_session(custom_node->context, delete_writer);
370370
ret &= run_xrce_session(custom_node->context, delete_publisher);
371371
if (!ret) {
372-
result_ret = RMW_RET_ERROR;
372+
result_ret = RMW_RET_TIMEOUT;
373373
}
374374

375375
rmw_uxrce_fini_publisher_memory(publisher);

rmw_microxrcedds_c/src/rmw_service.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -215,7 +215,7 @@ rmw_destroy_service(
215215
custom_service->service_id);
216216

217217
if (!run_xrce_session(custom_node->context, delete_service)) {
218-
result_ret = RMW_RET_ERROR;
218+
result_ret = RMW_RET_TIMEOUT;
219219
}
220220
rmw_uxrce_fini_service_memory(service);
221221
}

rmw_microxrcedds_c/src/rmw_subscription.c

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -343,8 +343,7 @@ rmw_destroy_subscription(
343343
bool ret = run_xrce_session(custom_node->context, delete_datareader);
344344
ret &= run_xrce_session(custom_node->context, delete_subscriber);
345345
if (!ret) {
346-
RMW_SET_ERROR_MSG("unable to remove publisher from the server");
347-
result_ret = RMW_RET_ERROR;
346+
result_ret = RMW_RET_TIMEOUT;
348347
}
349348
rmw_uxrce_fini_subscription_memory(subscription);
350349
}

rmw_microxrcedds_c/src/types.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -228,6 +228,7 @@ void rmw_uxrce_fini_topic_memory(
228228
rmw_uxrce_topic_t * topic)
229229
{
230230
put_memory(&topics_memory, &topic->mem);
231+
topic->owner_node = NULL;
231232
}
232233

233234
rmw_uxrce_mempool_item_t * rmw_uxrce_find_static_input_buffer_by_owner(

0 commit comments

Comments
 (0)