@@ -209,9 +209,14 @@ rmw_create_publisher(
209209
210210 uint16_t requests [] = {publisher_req , datawriter_req };
211211 uint8_t status [sizeof (requests ) / 2 ];
212- if (!uxr_run_session_until_all_status (
213- & custom_publisher -> owner_node -> context -> session , 1000 , requests ,
214- status , sizeof (status )))
212+
213+ if (UXR_BEST_EFFORT_STREAM == custom_node -> context -> entity_creation_output -> type )
214+ {
215+ uxr_flash_output_streams (& custom_node -> context -> session );
216+ }
217+ else if (!uxr_run_session_until_all_status (
218+ & custom_publisher -> owner_node -> context -> session , 1000 , requests ,
219+ status , sizeof (status )))
215220 {
216221 RMW_SET_ERROR_MSG ("Issues creating micro XRCE-DDS entities" );
217222 put_memory (& publisher_memory , & custom_publisher -> mem );
@@ -319,25 +324,37 @@ rmw_destroy_publisher(
319324
320325 uint16_t delete_writer = uxr_buffer_delete_entity (
321326 & custom_publisher -> owner_node -> context -> session ,
322- * custom_node -> context -> entity_creation_output ,
327+ * custom_publisher -> owner_node -> context -> entity_creation_output ,
323328 custom_publisher -> datawriter_id );
324329 uint16_t delete_publisher = uxr_buffer_delete_entity (
325330 & custom_publisher -> owner_node -> context -> session ,
326- * custom_node -> context -> entity_creation_output ,
331+ * custom_publisher -> owner_node -> context -> entity_creation_output ,
327332 custom_publisher -> publisher_id );
328333
329334 uint16_t requests [] = {delete_writer , delete_publisher };
330335 uint8_t status [sizeof (requests ) / 2 ];
331- if (!uxr_run_session_until_all_status (
332- & custom_publisher -> owner_node -> context -> session , 1000 , requests , status ,
333- sizeof (status )))
336+
337+ if (UXR_BEST_EFFORT_STREAM == custom_publisher -> owner_node -> context -> entity_creation_output -> type )
334338 {
335- RMW_SET_ERROR_MSG ("unable to remove publisher from the server" );
336- result_ret = RMW_RET_ERROR ;
337- } else {
339+ uxr_flash_output_streams (& custom_publisher -> owner_node -> context -> session );
338340 rmw_uxrce_fini_publisher_memory (publisher );
339341 result_ret = RMW_RET_OK ;
340342 }
343+ else
344+ {
345+ if (!uxr_run_session_until_all_status (
346+ & custom_publisher -> owner_node -> context -> session , 1000 , requests , status ,
347+ sizeof (status )))
348+ {
349+ RMW_SET_ERROR_MSG ("unable to remove publisher from the server" );
350+ result_ret = RMW_RET_ERROR ;
351+ }
352+ else
353+ {
354+ rmw_uxrce_fini_publisher_memory (publisher );
355+ result_ret = RMW_RET_OK ;
356+ }
357+ }
341358 }
342359
343360 return result_ret ;
0 commit comments