improve parsing of durations
This commit is contained in:
36
src/lib.rs
36
src/lib.rs
@@ -12,6 +12,7 @@ use figment::{
|
||||
use gethostname::gethostname;
|
||||
use influxdb2::models::DataPoint;
|
||||
use serde_derive::{Deserialize, Serialize};
|
||||
use serde_with::{DurationSeconds, serde_as};
|
||||
use tokio::sync::broadcast::*;
|
||||
|
||||
use std::{fmt::Debug, path::Path, sync::Arc};
|
||||
@@ -40,12 +41,16 @@ impl Default for InfluxConfig {
|
||||
}
|
||||
}
|
||||
|
||||
#[serde_as]
|
||||
#[derive(Serialize, Deserialize, Clone)]
|
||||
pub struct ChronyConfig {
|
||||
pub enabled: bool,
|
||||
pub timeout: u64,
|
||||
pub tracking_interval: u64,
|
||||
pub sources_interval: u64,
|
||||
#[serde_as(as = "DurationSeconds<u64>")]
|
||||
pub timeout: std::time::Duration,
|
||||
#[serde_as(as = "DurationSeconds<u64>")]
|
||||
pub tracking_interval: std::time::Duration,
|
||||
#[serde_as(as = "DurationSeconds<u64>")]
|
||||
pub sources_interval: std::time::Duration,
|
||||
pub measurement_prefix: String,
|
||||
pub tracking_measurement: String,
|
||||
pub sources_measurement: String,
|
||||
@@ -56,9 +61,9 @@ impl Default for ChronyConfig {
|
||||
fn default() -> Self {
|
||||
ChronyConfig {
|
||||
enabled: false,
|
||||
timeout: 5,
|
||||
tracking_interval: 60,
|
||||
sources_interval: 300,
|
||||
timeout: std::time::Duration::from_secs(5),
|
||||
tracking_interval: std::time::Duration::from_secs(60),
|
||||
sources_interval: std::time::Duration::from_secs(300),
|
||||
measurement_prefix: "chrony.".into(),
|
||||
tracking_measurement: "tracking".into(),
|
||||
sources_measurement: "sources".into(),
|
||||
@@ -88,10 +93,12 @@ pub struct HwmonSensorConfig {
|
||||
pub sensor: String,
|
||||
}
|
||||
|
||||
#[serde_as]
|
||||
#[derive(Serialize, Deserialize, Clone)]
|
||||
pub struct HwmonConfig {
|
||||
pub enabled: bool,
|
||||
pub interval: u64,
|
||||
#[serde_as(as = "DurationSeconds<u64>")]
|
||||
pub interval: std::time::Duration,
|
||||
pub measurement: String,
|
||||
pub sensors: Map<String, HwmonSensorConfig>,
|
||||
}
|
||||
@@ -100,17 +107,19 @@ impl Default for HwmonConfig {
|
||||
fn default() -> Self {
|
||||
HwmonConfig {
|
||||
enabled: false,
|
||||
interval: 60,
|
||||
interval: std::time::Duration::from_secs(60),
|
||||
measurement: "hwmon".into(),
|
||||
sensors: map! {},
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#[serde_as]
|
||||
#[derive(Serialize, Deserialize, Clone, Debug)]
|
||||
pub struct GpsdConfig {
|
||||
pub enabled: bool,
|
||||
pub interval: u64,
|
||||
#[serde_as(as = "DurationSeconds<u64>")]
|
||||
pub interval: std::time::Duration,
|
||||
pub host: String,
|
||||
}
|
||||
|
||||
@@ -118,19 +127,23 @@ impl Default for GpsdConfig {
|
||||
fn default() -> Self {
|
||||
GpsdConfig {
|
||||
enabled: false,
|
||||
interval: 60,
|
||||
interval: std::time::Duration::from_secs(60),
|
||||
host: "localhost:2947".into(),
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#[serde_as]
|
||||
#[derive(Serialize, Deserialize, Clone, Debug)]
|
||||
pub struct Prs10Config {
|
||||
pub enabled: bool,
|
||||
pub port: String,
|
||||
pub baud: u32,
|
||||
#[serde_as(as = "DurationSeconds<u64>")]
|
||||
pub timeout: std::time::Duration,
|
||||
#[serde_as(as = "DurationSeconds<u64>")]
|
||||
pub status_interval: std::time::Duration,
|
||||
#[serde_as(as = "DurationSeconds<u64>")]
|
||||
pub stats_interval: std::time::Duration,
|
||||
}
|
||||
|
||||
@@ -217,12 +230,15 @@ pub struct SourceReport {
|
||||
pub details: Arc<dyn SourceReportDetails>,
|
||||
}
|
||||
|
||||
#[serde_as]
|
||||
#[derive(Serialize, Deserialize, Clone)]
|
||||
pub struct UCCMConfig {
|
||||
pub enabled: bool,
|
||||
pub port: String,
|
||||
pub baud: u32,
|
||||
#[serde_as(as = "DurationSeconds<u64>")]
|
||||
pub status_interval: std::time::Duration,
|
||||
#[serde_as(as = "DurationSeconds<u64>")]
|
||||
pub timeout: std::time::Duration,
|
||||
pub measurement: String,
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user