use super::ShutdownSignal;
use std::pin::Pin;
pub struct CtrlCSignal {
name: String,
}
impl CtrlCSignal {
pub fn new() -> Self {
Self {
name: "ctrl_c".to_string(),
}
}
}
impl Default for CtrlCSignal {
fn default() -> Self {
Self::new()
}
}
impl ShutdownSignal for CtrlCSignal {
fn wait(&mut self) -> Pin<Box<dyn std::future::Future<Output = ()> + Send + '_>> {
Box::pin(async {
let _ = tokio::signal::ctrl_c().await;
})
}
fn name(&self) -> &str {
&self.name
}
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn test_ctrl_c_signal_new() {
let signal = CtrlCSignal::new();
assert_eq!(signal.name(), "ctrl_c");
}
}