diff --git a/crates/pscand-cli/src/main.rs b/crates/pscand-cli/src/main.rs index a9d0b8b..dcae7f8 100644 --- a/crates/pscand-cli/src/main.rs +++ b/crates/pscand-cli/src/main.rs @@ -37,6 +37,7 @@ struct RunArgs { struct LoadedScanner { name: String, scanner: Arc>>, + interval: Duration, #[allow(dead_code)] library: Library, } @@ -283,10 +284,11 @@ async fn run_daemon(args: RunArgs) -> Result<(), Box> { let logger = Arc::clone(&logger_clone); let name = loaded.name.clone(); let scanner = loaded.scanner.clone(); + let scanner_interval = loaded.interval; let state = daemon_state_clone.clone(); let handle = tokio::spawn(async move { - let mut ticker = interval(Duration::from_secs(1)); + let mut ticker = interval(scanner_interval); let _collection_start = Instant::now(); loop { @@ -491,9 +493,17 @@ async fn load_scanners( } } + // Determine interval: config override > scanner default + let interval = config + .scanner_config(&name) + .and_then(|c| c.interval_secs) + .map(Duration::from_secs) + .unwrap_or_else(|| scanner.interval()); + loaded.push(LoadedScanner { name, scanner: Arc::new(RwLock::new(scanner)), + interval, library: lib, }); }