Skip to main content

bsv_wallet_toolbox/monitor/tasks/
task_sync_when_idle.rs

1//! TaskSyncWhenIdle -- stub task that always returns false from trigger.
2//!
3//! Translated from wallet-toolbox/src/monitor/tasks/TaskSyncWhenIdle.ts.
4//! The TS implementation is a TODO/stub -- trigger always returns false.
5
6use async_trait::async_trait;
7
8use crate::error::WalletError;
9use crate::monitor::task_trait::WalletMonitorTask;
10
11/// Stub task for future sync-when-idle functionality.
12///
13/// Trigger always returns false -- this task never runs.
14pub struct TaskSyncWhenIdle;
15
16impl TaskSyncWhenIdle {
17    /// Create a new sync-when-idle task (currently a no-op stub).
18    pub fn new() -> Self {
19        Self
20    }
21}
22
23#[async_trait]
24impl WalletMonitorTask for TaskSyncWhenIdle {
25    fn name(&self) -> &str {
26        "SyncWhenIdle"
27    }
28
29    fn trigger(&mut self, _now_msecs: u64) -> bool {
30        false
31    }
32
33    async fn run_task(&mut self) -> Result<String, WalletError> {
34        Ok("sync not implemented".to_string())
35    }
36}
37
38#[cfg(test)]
39mod tests {
40    use super::*;
41
42    #[test]
43    fn test_sync_when_idle_never_triggers() {
44        let mut task = TaskSyncWhenIdle::new();
45        assert!(!task.trigger(0));
46        assert!(!task.trigger(u64::MAX));
47    }
48
49    #[tokio::test]
50    async fn test_sync_when_idle_run_task() {
51        let mut task = TaskSyncWhenIdle::new();
52        let result = task.run_task().await.unwrap();
53        assert_eq!(result, "sync not implemented");
54    }
55
56    #[test]
57    fn test_name() {
58        let task = TaskSyncWhenIdle::new();
59        assert_eq!(task.name(), "SyncWhenIdle");
60    }
61}