#[allow(unused)]
use crate::all::*;
use std::{
sync::atomic::{AtomicU32, AtomicU64, Ordering},
time::Duration,
};
static DEFAULT_SHUTDOWN_TIME_NANOS: AtomicU32 = AtomicU32::new(0);
static DEFAULT_SHUTDOWN_TIME_SECS: AtomicU64 = AtomicU64::new(1);
pub fn set_default_shutdown_time(duration: Duration) {
DEFAULT_SHUTDOWN_TIME_NANOS.store(duration.subsec_nanos(), Ordering::Release);
DEFAULT_SHUTDOWN_TIME_SECS.store(duration.as_secs(), Ordering::Release);
}
pub fn get_default_shutdown_time() -> Duration {
Duration::new(
DEFAULT_SHUTDOWN_TIME_SECS.load(Ordering::Acquire),
DEFAULT_SHUTDOWN_TIME_NANOS.load(Ordering::Acquire),
)
}
#[cfg(test)]
mod test {
use super::*;
#[test]
fn default_shutdown_time() {
assert_eq!(get_default_shutdown_time(), Duration::from_secs(1));
set_default_shutdown_time(Duration::from_secs(2));
assert_eq!(get_default_shutdown_time(), Duration::from_secs(2));
}
}