pub struct WaitSetRunner { /* private fields */ }Expand description
This is a utility class that executors can use to easily run and manage their wait set.
Implementations§
Source§impl WaitSetRunner
impl WaitSetRunner
Sourcepub fn new(worker_options: ExecutorWorkerOptions) -> Self
pub fn new(worker_options: ExecutorWorkerOptions) -> Self
Create a new WaitSetRunner.
Sourcepub fn waitable_sender(&self) -> UnboundedSender<Waitable>
pub fn waitable_sender(&self) -> UnboundedSender<Waitable>
Get the sender that allows users to send new Waitables to this
WaitSetRunner.
Sourcepub fn payload_task_sender(&self) -> UnboundedSender<PayloadTask>
pub fn payload_task_sender(&self) -> UnboundedSender<PayloadTask>
Get the sender that allows users to send new PayloadTasks to this
WaitSetRunner.
Sourcepub fn activity_listeners(&self) -> Arc<Mutex<Vec<WeakActivityListener>>>
pub fn activity_listeners(&self) -> Arc<Mutex<Vec<WeakActivityListener>>>
Get the group of senders that will be triggered each time the wait set is woken up. This is used
Sourcepub fn guard_condition(&self) -> &Arc<GuardCondition>
pub fn guard_condition(&self) -> &Arc<GuardCondition>
Get the guard condition associated with the wait set of this runner.
Sourcepub fn run(
self,
conditions: WaitSetRunConditions,
) -> Promise<(Self, Result<(), RclrsError>)> ⓘ
pub fn run( self, conditions: WaitSetRunConditions, ) -> Promise<(Self, Result<(), RclrsError>)> ⓘ
Spawn a thread to run the wait set. You will receive a Promise that will be resolved once the wait set stops spinning.
Note that if the user gives a SpinOptions::until_promise_resolved,
the best practice is for your executor runtime to swap that out with a
new promise which ensures that the ExecutorWorkerOptions::guard_condition
will be triggered after the user-provided promise is resolved.
Sourcepub fn run_blocking(
&mut self,
conditions: WaitSetRunConditions,
) -> Result<(), RclrsError>
pub fn run_blocking( &mut self, conditions: WaitSetRunConditions, ) -> Result<(), RclrsError>
Run the wait set on the current thread. This will block the execution of the current thread until the wait set is finished waiting.
Note that if the user gives a SpinOptions::until_promise_resolved,
the best practice is for your executor runtime to swap that out with a
new promise which ensures that the ExecutorWorkerOptions::guard_condition
will be triggered after the user-provided promise is resolved.
Auto Trait Implementations§
impl Freeze for WaitSetRunner
impl !RefUnwindSafe for WaitSetRunner
impl Send for WaitSetRunner
impl !Sync for WaitSetRunner
impl Unpin for WaitSetRunner
impl !UnwindSafe for WaitSetRunner
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more