pub enum TaskTerminateReason {
Timeout,
Cleanup,
DependenciesFinished,
UserRequested,
}
Expand description
Reason for terminating a running task
Provides context about why a task termination was requested, enabling appropriate cleanup and response handling.
§Examples
§Timeout Termination
use tcrm_task::tasks::{
config::TaskConfig,
async_tokio::spawner::TaskSpawner,
event::TaskTerminateReason
};
use tokio::sync::mpsc;
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
let config = TaskConfig::new("cmd").args(["/C", "ping", "127.0.0.1", "-n", "5"]); // 5 second sleep
let mut spawner = TaskSpawner::new("long-task".to_string(), config);
let (tx, _rx) = mpsc::channel(100);
spawner.start_direct(tx).await?;
// Terminate after 1 second
tokio::time::sleep(tokio::time::Duration::from_secs(1)).await;
spawner.send_terminate_signal(TaskTerminateReason::Timeout).await?;
Ok(())
}
§Cleanup Termination
use tcrm_task::tasks::{
config::TaskConfig,
async_tokio::spawner::TaskSpawner,
event::TaskTerminateReason
};
use tokio::sync::mpsc;
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
let config = TaskConfig::new("cmd").args(["/C", "echo", "running"]);
let mut spawner = TaskSpawner::new("daemon".to_string(), config);
let (tx, _rx) = mpsc::channel(100);
spawner.start_direct(tx).await?;
// Cleanup shutdown reason
let reason = TaskTerminateReason::Cleanup;
spawner.send_terminate_signal(reason).await?;
Ok(())
}
Variants§
Timeout
Task exceeded its configured timeout
The process ran longer than the timeout_ms
specified in TaskConfig
and was terminated to prevent runaway processes.
Cleanup
Task was terminated during cleanup operations
Used when terminating tasks as part of application shutdown, resource cleanup, or dependency management.
DependenciesFinished
Task was terminated because its dependencies finished
Used in task orchestration scenarios where tasks depend on other tasks and should be terminated when dependencies complete.
UserRequested
Task was terminated by explicit user request
Used when user or external library requests the task to stop.
Trait Implementations§
Source§impl Clone for TaskTerminateReason
impl Clone for TaskTerminateReason
Source§fn clone(&self) -> TaskTerminateReason
fn clone(&self) -> TaskTerminateReason
Returns a duplicate of the value. Read more
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source
. Read moreSource§impl Debug for TaskTerminateReason
impl Debug for TaskTerminateReason
Source§impl PartialEq for TaskTerminateReason
impl PartialEq for TaskTerminateReason
impl StructuralPartialEq for TaskTerminateReason
Auto Trait Implementations§
impl Freeze for TaskTerminateReason
impl RefUnwindSafe for TaskTerminateReason
impl Send for TaskTerminateReason
impl Sync for TaskTerminateReason
impl Unpin for TaskTerminateReason
impl UnwindSafe for TaskTerminateReason
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