#[cfg(feature = "process-control")]
use crate::tasks::error::TaskError;
#[cfg(feature = "process-control")]
pub trait ProcessControl {
#[cfg(feature = "tokio")]
fn stop_process(&mut self) -> impl futures::Future<Output = Result<(), TaskError>> {
self.perform_process_action(ProcessControlAction::Stop)
}
fn pause_process(&mut self) -> impl futures::Future<Output = Result<(), TaskError>> {
self.perform_process_action(ProcessControlAction::Pause)
}
fn resume_process(&mut self) -> impl futures::Future<Output = Result<(), TaskError>> {
self.perform_process_action(ProcessControlAction::Resume)
}
fn perform_process_action(
&mut self,
action: ProcessControlAction,
) -> impl futures::Future<Output = Result<(), TaskError>>;
}
#[cfg(feature = "process-control")]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub enum ProcessControlAction {
Stop,
Pause,
Resume,
}