1#[allow(unused)]
13use crate::all::*;
14
15use std::{
16 sync::atomic::{AtomicU32, AtomicU64, Ordering},
17 time::Duration,
18};
19
20static DEFAULT_SHUTDOWN_TIME_NANOS: AtomicU32 = AtomicU32::new(0);
21static DEFAULT_SHUTDOWN_TIME_SECS: AtomicU64 = AtomicU64::new(1);
22
23pub fn set_default_shutdown_time(duration: Duration) {
28 DEFAULT_SHUTDOWN_TIME_NANOS.store(duration.subsec_nanos(), Ordering::Release);
29 DEFAULT_SHUTDOWN_TIME_SECS.store(duration.as_secs(), Ordering::Release);
30}
31
32pub fn get_default_shutdown_time() -> Duration {
34 Duration::new(
35 DEFAULT_SHUTDOWN_TIME_SECS.load(Ordering::Acquire),
36 DEFAULT_SHUTDOWN_TIME_NANOS.load(Ordering::Acquire),
37 )
38}
39
40#[cfg(test)]
41mod test {
42 use super::*;
43 #[test]
44 fn default_shutdown_time() {
45 assert_eq!(get_default_shutdown_time(), Duration::from_secs(1));
46 set_default_shutdown_time(Duration::from_secs(2));
47 assert_eq!(get_default_shutdown_time(), Duration::from_secs(2));
48 }
49}