// Copyright 2017 TiKV Project Authors. Licensed under Apache-2.0.

pub use self::imp::wait_for_signal;

#[cfg(not(unix))]
mod imp {
    use engine::Engines;

    pub fn wait_for_signal(_: Option<Engines>) {}
}

#[cfg(unix)]
mod imp {
    use engine::Engines;
    use signal_hook::{consts::{SIGINT, SIGTERM, SIGHUP}, iterator::Signals};

    pub fn wait_for_signal(_: Option<Engines>) {
        let mut signals = Signals::new(&[SIGINT, SIGTERM, SIGHUP]);
        for sig in signals.unwrap().forever() {
            println!("Received signal {:?}, stop server...", sig);
            break;
        }
    }
}
