@@ -434,6 +434,141 @@ rclc_executor_add_guard_condition(
434
434
rcl_guard_condition_t * gc ,
435
435
rclc_gc_callback_t callback );
436
436
437
+
438
+ /**
439
+ * Removes a subscription from an executor.
440
+ * * An error is returned if {@link rclc_executor_t.handles} array is empty.
441
+ * * An error is returned if subscription is not found in {@link rclc_executor_t.handles}.
442
+ * * The total number_of_subscriptions field of {@link rclc_executor_t.info}
443
+ * is decremented by one.
444
+ *
445
+ * <hr>
446
+ * Attribute | Adherence
447
+ * ------------------ | -------------
448
+ * Allocates Memory | No
449
+ * Thread-Safe | No
450
+ * Uses Atomics | No
451
+ * Lock-Free | Yes
452
+ *
453
+ * \param [inout] executor pointer to initialized executor
454
+ * \param [in] subscription pointer to an allocated and initialized subscription previously added to executor
455
+ * \return `RCL_RET_OK` if add-operation was successful
456
+ * \return `RCL_RET_INVALID_ARGUMENT` if any parameter is a null pointer
457
+ * \return `RCL_RET_ERROR` if any other error occured
458
+ */
459
+ rcl_ret_t
460
+ rclc_executor_remove_subscription (
461
+ rclc_executor_t * executor ,
462
+ const rcl_subscription_t * subscription );
463
+
464
+
465
+ /**
466
+ * Removes a timer from an executor.
467
+ * * An error is returned if {@link rclc_executor_t.handles} array is empty.
468
+ * * An error is returned if timer is not found in {@link rclc_executor_t.handles}.
469
+ * * The total number_of_timers field of {@link rclc_executor_t.info}
470
+ * is incremented by one.
471
+ *
472
+ * <hr>
473
+ * Attribute | Adherence
474
+ * ------------------ | -------------
475
+ * Allocates Memory | No
476
+ * Thread-Safe | No
477
+ * Uses Atomics | No
478
+ * Lock-Free | Yes
479
+ *
480
+ * \param [inout] executor pointer to initialized executor
481
+ * \param [in] timer pointer to an allocated and initialized timer previously added to executor
482
+ * \return `RCL_RET_OK` if add-operation was successful
483
+ * \return `RCL_RET_INVALID_ARGUMENT` if any parameter is a null pointer
484
+ * \return `RCL_RET_ERROR` if any other error occured
485
+ */
486
+ rcl_ret_t
487
+ rclc_executor_remove_timer (
488
+ rclc_executor_t * executor ,
489
+ const rcl_timer_t * timer );
490
+
491
+
492
+ /**
493
+ * Removes a client from an executor.
494
+ * * An error is returned if {@link rclc_executor_t.handles} array is empty.
495
+ * * An error is returned if client is not found in {@link rclc_executor_t.handles}.
496
+ * * The total number_of_clients field of {@link rclc_executor_t.info}
497
+ * is incremented by one.
498
+ *
499
+ * <hr>
500
+ * Attribute | Adherence
501
+ * ------------------ | -------------
502
+ * Allocates Memory | No
503
+ * Thread-Safe | No
504
+ * Uses Atomics | No
505
+ * Lock-Free | Yes
506
+ *
507
+ * \param [inout] executor pointer to initialized executor
508
+ * \param [in] client pointer to an allocated and initialized client previously added to executor
509
+ * \return `RCL_RET_OK` if add-operation was successful
510
+ * \return `RCL_RET_INVALID_ARGUMENT` if any parameter is a null pointer
511
+ * \return `RCL_RET_ERROR` if any other error occured
512
+ */
513
+ rcl_ret_t
514
+ rclc_executor_remove_client (
515
+ rclc_executor_t * executor ,
516
+ const rcl_client_t * client );
517
+
518
+
519
+ /**
520
+ * Removes a service from an executor.
521
+ * * An error is returned if {@link rclc_executor_t.handles} array is empty.
522
+ * * An error is returned if service is not found in {@link rclc_executor_t.handles}.
523
+ * * The total number_of_services field of {@link rclc_executor_t.info}
524
+ * is incremented by one.
525
+ *
526
+ * <hr>
527
+ * Attribute | Adherence
528
+ * ------------------ | -------------
529
+ * Allocates Memory | No
530
+ * Thread-Safe | No
531
+ * Uses Atomics | No
532
+ * Lock-Free | Yes
533
+ *
534
+ * \param [inout] executor pointer to initialized executor
535
+ * \param [in] service pointer to an allocated and initialized service previously added to executor
536
+ * \return `RCL_RET_OK` if add-operation was successful
537
+ * \return `RCL_RET_INVALID_ARGUMENT` if any parameter is a null pointer
538
+ * \return `RCL_RET_ERROR` if any other error occured
539
+ */
540
+ rcl_ret_t
541
+ rclc_executor_remove_service (
542
+ rclc_executor_t * executor ,
543
+ const rcl_service_t * service );
544
+
545
+ /**
546
+ * Removes a guard_condition from an executor.
547
+ * * An error is returned if {@link rclc_executor_t.handles} array is empty.
548
+ * * An error is returned if guard_condition is not found in {@link rclc_executor_t.handles}.
549
+ * * The total number_of_guard_conditions field of {@link rclc_executor_t.info}
550
+ * is incremented by one.
551
+ *
552
+ * <hr>
553
+ * Attribute | Adherence
554
+ * ------------------ | -------------
555
+ * Allocates Memory | No
556
+ * Thread-Safe | No
557
+ * Uses Atomics | No
558
+ * Lock-Free | Yes
559
+ *
560
+ * \param [inout] executor pointer to initialized executor
561
+ * \param [in] guard_condition pointer to an allocated and initialized guard_condition previously added to executor
562
+ * \return `RCL_RET_OK` if add-operation was successful
563
+ * \return `RCL_RET_INVALID_ARGUMENT` if any parameter is a null pointer
564
+ * \return `RCL_RET_ERROR` if any other error occured
565
+ */
566
+ rcl_ret_t
567
+ rclc_executor_remove_guard_condition (
568
+ rclc_executor_t * executor ,
569
+ const rcl_guard_condition_t * guard_condition );
570
+
571
+
437
572
/**
438
573
* The spin-some function checks one-time for new data from the DDS-queue.
439
574
* * the timeout is defined in {@link rclc_executor_t.timeout_ns} and can
0 commit comments