mirror of
https://github.com/bitcoinresearchkit/brk.git
synced 2026-07-13 12:08:13 -07:00
32 lines
634 B
Rust
32 lines
634 B
Rust
use std::{fmt::Debug, thread::sleep, time::Duration};
|
|
|
|
use brk_error::Result;
|
|
use log::info;
|
|
|
|
pub fn default_retry<T>(function: impl Fn(usize) -> Result<T>) -> Result<T>
|
|
where
|
|
T: Debug,
|
|
{
|
|
retry(function, 5, 6)
|
|
}
|
|
|
|
fn retry<T>(function: impl Fn(usize) -> Result<T>, sleep_in_s: u64, retries: usize) -> Result<T>
|
|
where
|
|
T: Debug,
|
|
{
|
|
let mut i = 0;
|
|
|
|
loop {
|
|
let res = function(i);
|
|
|
|
if i == retries || res.is_ok() {
|
|
return res;
|
|
} else {
|
|
info!("Failed, waiting {sleep_in_s} seconds...");
|
|
sleep(Duration::from_secs(sleep_in_s));
|
|
}
|
|
|
|
i += 1;
|
|
}
|
|
}
|