@@ -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 );
@@ -317,25 +322,37 @@ rmw_destroy_publisher(
317322
318323 uint16_t delete_writer = uxr_buffer_delete_entity (
319324 & custom_publisher -> owner_node -> context -> session ,
320- * custom_node -> context -> entity_creation_output ,
325+ * custom_publisher -> owner_node -> context -> entity_creation_output ,
321326 custom_publisher -> datawriter_id );
322327 uint16_t delete_publisher = uxr_buffer_delete_entity (
323328 & custom_publisher -> owner_node -> context -> session ,
324- * custom_node -> context -> entity_creation_output ,
329+ * custom_publisher -> owner_node -> context -> entity_creation_output ,
325330 custom_publisher -> publisher_id );
326331
327332 uint16_t requests [] = {delete_writer , delete_publisher };
328333 uint8_t status [sizeof (requests ) / 2 ];
329- if (!uxr_run_session_until_all_status (
330- & custom_publisher -> owner_node -> context -> session , 1000 , requests , status ,
331- sizeof (status )))
334+
335+ if (UXR_BEST_EFFORT_STREAM == custom_publisher -> owner_node -> context -> entity_creation_output -> type )
332336 {
333- RMW_SET_ERROR_MSG ("unable to remove publisher from the server" );
334- result_ret = RMW_RET_ERROR ;
335- } else {
337+ uxr_flash_output_streams (& custom_publisher -> owner_node -> context -> session );
336338 rmw_uxrce_fini_publisher_memory (publisher );
337339 result_ret = RMW_RET_OK ;
338340 }
341+ else
342+ {
343+ if (!uxr_run_session_until_all_status (
344+ & custom_publisher -> owner_node -> context -> session , 1000 , requests , status ,
345+ sizeof (status )))
346+ {
347+ RMW_SET_ERROR_MSG ("unable to remove publisher from the server" );
348+ result_ret = RMW_RET_ERROR ;
349+ }
350+ else
351+ {
352+ rmw_uxrce_fini_publisher_memory (publisher );
353+ result_ret = RMW_RET_OK ;
354+ }
355+ }
339356 }
340357
341358 return result_ret ;
0 commit comments