pscand-cli: configuration overrides scanner default interval

Signed-off-by: NotAShelf <raf@notashelf.dev>
Change-Id: I2e338b03ff26b355d8fd430772f94cd46a6a6964
This commit is contained in:
raf 2026-02-19 00:46:26 +03:00
commit 7f2934338f
Signed by: NotAShelf
GPG key ID: 29D95B64378DB4BF

View file

@ -37,6 +37,7 @@ struct RunArgs {
struct LoadedScanner { struct LoadedScanner {
name: String, name: String,
scanner: Arc<RwLock<Box<dyn Scanner>>>, scanner: Arc<RwLock<Box<dyn Scanner>>>,
interval: Duration,
#[allow(dead_code)] #[allow(dead_code)]
library: Library, library: Library,
} }
@ -283,10 +284,11 @@ async fn run_daemon(args: RunArgs) -> Result<(), Box<dyn std::error::Error>> {
let logger = Arc::clone(&logger_clone); let logger = Arc::clone(&logger_clone);
let name = loaded.name.clone(); let name = loaded.name.clone();
let scanner = loaded.scanner.clone(); let scanner = loaded.scanner.clone();
let scanner_interval = loaded.interval;
let state = daemon_state_clone.clone(); let state = daemon_state_clone.clone();
let handle = tokio::spawn(async move { 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(); let _collection_start = Instant::now();
loop { 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 { loaded.push(LoadedScanner {
name, name,
scanner: Arc::new(RwLock::new(scanner)), scanner: Arc::new(RwLock::new(scanner)),
interval,
library: lib, library: lib,
}); });
} }