| Crates.io | simple-tokio-watchdog |
| lib.rs | simple-tokio-watchdog |
| version | 0.2.0 |
| created_at | 2023-08-02 21:55:17.623045+00 |
| updated_at | 2023-08-24 16:28:10.787981+00 |
| description | Pretty simple but bulletproof watchdog actor. |
| homepage | |
| repository | https://github.com/barafael/watchdog |
| max_upload_size | |
| id | 933160 |
| size | 19,806 |
Pretty simple but bulletproof watchdog actor.
Send reset signals on the mpsc sender at a fast enough rate, or else the expiration oneshot channel will trigger.
use tokio::select;
use simple_tokio_watchdog::{Signal, Watchdog};
use std::time::Duration;
#[tokio::main]
async fn main() {
let watchdog = Watchdog::with_timeout(Duration::from_millis(100));
let (reset_tx, mut expired_rx) = watchdog.run();
let mut duration = Duration::from_millis(4);
loop {
let sleep = tokio::time::sleep(duration);
tokio::pin!(sleep);
tokio::select! {
_ = &mut expired_rx => {
break;
}
() = sleep.as_mut() => {
reset_tx.send(Signal::Reset).await.unwrap();
duration *= 2;
continue;
}
}
}
println!("{duration:?}");
}