Skip to main content

forge_core/config/
daemon_config.rs

1//! Daemon runner configuration.
2
3use std::time::Duration;
4
5use serde::{Deserialize, Serialize};
6
7use super::types::DurationStr;
8
9/// Daemon runner configuration.
10#[derive(Debug, Clone, Serialize, Deserialize)]
11#[non_exhaustive]
12pub struct DaemonConfig {
13    /// How often the daemon runner checks health of running daemons.
14    #[serde(default = "default_health_check_interval")]
15    pub health_check_interval: DurationStr,
16
17    /// How often leader-elected daemons send heartbeats.
18    #[serde(default = "default_heartbeat_interval")]
19    pub heartbeat_interval: DurationStr,
20}
21
22impl Default for DaemonConfig {
23    fn default() -> Self {
24        Self {
25            health_check_interval: default_health_check_interval(),
26            heartbeat_interval: default_heartbeat_interval(),
27        }
28    }
29}
30
31fn default_health_check_interval() -> DurationStr {
32    DurationStr::new(Duration::from_secs(30))
33}
34
35fn default_heartbeat_interval() -> DurationStr {
36    DurationStr::new(Duration::from_secs(10))
37}