#[cfg(unix)]
pub mod unix;
#[cfg(windows)]
pub mod windows;
use crate::errors::Result;
use std::process::Child;
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub enum Signal {
Term,
Kill,
Int,
Stop,
Cont,
Tstp,
Hup,
}
pub struct SignalHandler;
impl SignalHandler {
pub fn send_signal(child: &Child, signal: Signal) -> Result<()> {
#[cfg(unix)]
return unix::send_signal(child, signal);
#[cfg(windows)]
return windows::send_signal(child, signal);
#[cfg(not(any(unix, windows)))]
Err(crate::errors::StandbyError::Internal(
"Signal handling not implemented for this platform".to_string(),
))
}
pub fn wait_with_timeout(
child: Child,
timeout: Option<std::time::Duration>,
) -> Result<std::process::ExitStatus> {
#[cfg(unix)]
return unix::wait_with_timeout(child, timeout);
#[cfg(windows)]
return windows::wait_with_timeout(child, timeout);
#[cfg(not(any(unix, windows)))]
Err(crate::errors::StandbyError::Internal(
"Process waiting not implemented for this platform".to_string(),
))
}
}