nodedb_types/config/tuning/
shutdown.rs1use serde::{Deserialize, Serialize};
7
8fn default_shutdown_deadline_ms() -> u64 {
9 900
14}
15
16#[derive(Debug, Clone, Serialize, Deserialize)]
18pub struct ShutdownTuning {
19 #[serde(default = "default_shutdown_deadline_ms")]
24 pub deadline_ms: u64,
25}
26
27impl Default for ShutdownTuning {
28 fn default() -> Self {
29 Self {
30 deadline_ms: default_shutdown_deadline_ms(),
31 }
32 }
33}
34
35impl ShutdownTuning {
36 pub fn deadline(&self) -> std::time::Duration {
38 std::time::Duration::from_millis(self.deadline_ms)
39 }
40}
41
42#[cfg(test)]
43mod tests {
44 use super::*;
45
46 #[test]
47 fn default_deadline_is_900ms() {
48 let t = ShutdownTuning::default();
49 assert_eq!(t.deadline_ms, 900);
50 assert_eq!(t.deadline(), std::time::Duration::from_millis(900));
51 }
52
53 #[test]
54 fn override_deadline() {
55 let toml_str = r#"deadline_ms = 1500"#;
56 let t: ShutdownTuning = toml::from_str(toml_str).unwrap();
57 assert_eq!(t.deadline_ms, 1500);
58 }
59}