TaskTerminateReason

Enum TaskTerminateReason 

Source
pub enum TaskTerminateReason {
    Timeout,
    Cleanup,
    DependenciesFinished,
    UserRequested,
    InternalError,
}
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,
    tokio::executor::TaskExecutor,
    event::TaskTerminateReason
};
use tokio::sync::mpsc;

#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
    #[cfg(windows)]
    let config = TaskConfig::new("cmd").args(["/C", "timeout", "/t", "5"]); // 5 second sleep
    #[cfg(unix)]
    let config = TaskConfig::new("sleep").args(["5"]); // 5 second sleep
     
    let (tx, _rx) = mpsc::channel(100);
    let mut executor = TaskExecutor::new(config, tx);
     
    executor.coordinate_start().await?;
     
    // Terminate after 1 second
    tokio::time::sleep(tokio::time::Duration::from_secs(1)).await;
     
    Ok(())
}

§Cleanup Termination

use tcrm_task::tasks::{
    config::TaskConfig,
    tokio::executor::TaskExecutor,
    event::TaskTerminateReason
};
use tokio::sync::mpsc;
use crate::tcrm_task::tasks::control::TaskControl;

#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
    #[cfg(windows)]
    let config = TaskConfig::new("cmd").args(["/C", "echo", "running"]);
    #[cfg(unix)]
    let config = TaskConfig::new("echo").args(["running"]);
     
    let (tx, _rx) = mpsc::channel(100);
    let mut executor = TaskExecutor::new(config, tx);
     
    executor.coordinate_start().await?;
     
    let reason = TaskTerminateReason::UserRequested;
    executor.terminate_task(reason)?;
    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.

§

InternalError

Task was terminated due to internal error condition

Indicates that the task encountered an unexpected error that caused it to be terminated.

Trait Implementations§

Source§

impl Clone for TaskTerminateReason

Source§

fn clone(&self) -> TaskTerminateReason

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for TaskTerminateReason

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl PartialEq for TaskTerminateReason

Source§

fn eq(&self, other: &TaskTerminateReason) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl StructuralPartialEq for TaskTerminateReason

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.