pub struct EmitterHandle { /* private fields */ }Expand description
Handle for controlling a running emitter task.
§Shutdown Behavior
You must call shutdown().await to stop the emitter task. The handle does
not implement Drop to avoid race conditions and resource leaks.
If you drop the handle without calling shutdown(), the background task will
continue running indefinitely, potentially causing:
- Resource leaks (the task holds references to the registry)
- Unexpected behavior if the task outlives expected lifetime
- Inability to observe task failures or panics
§Examples
let handle = emitter.start(|_| {}, false);
// Always call shutdown explicitly
handle.shutdown().await.expect("shutdown failed");Implementations§
Source§impl EmitterHandle
impl EmitterHandle
Sourcepub async fn shutdown(self) -> Result<(), ShutdownError>
pub async fn shutdown(self) -> Result<(), ShutdownError>
Trigger graceful shutdown and wait for the task to complete.
This method uses a default timeout of 10 seconds. For custom timeout durations,
use shutdown_with_timeout.
§Errors
Returns an error if:
- The task panics during shutdown
- The task is cancelled
- Shutdown exceeds the timeout (10 seconds)
- The shutdown signal fails to send
§Examples
let handle = emitter.start(|_| {}, false);
// Do some work...
// Clean shutdown with default 10 second timeout
handle.shutdown().await?;Sourcepub async fn shutdown_with_timeout(
self,
timeout_duration: Duration,
) -> Result<(), ShutdownError>
pub async fn shutdown_with_timeout( self, timeout_duration: Duration, ) -> Result<(), ShutdownError>
Trigger graceful shutdown with a custom timeout.
This method:
- Sends the shutdown signal
- Waits for the background task to finish (up to the timeout)
- If the timeout is exceeded, the task is aborted
§Errors
Returns an error if:
- The task panics during shutdown
- The task is cancelled
- Shutdown exceeds the specified timeout
- The shutdown signal fails to send
§Examples
let handle = emitter.start(|_| {}, false);
// Do some work...
// Clean shutdown with 5 second timeout
handle.shutdown_with_timeout(Duration::from_secs(5)).await?;Sourcepub fn is_running(&self) -> bool
pub fn is_running(&self) -> bool
Check if the emitter task is still running.
Auto Trait Implementations§
impl Freeze for EmitterHandle
impl RefUnwindSafe for EmitterHandle
impl Send for EmitterHandle
impl Sync for EmitterHandle
impl Unpin for EmitterHandle
impl UnwindSafe for EmitterHandle
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
Mutably borrows from an owned value. Read more