#[allow(clippy::disallowed_types)]
use std::{sync::Arc, time::Duration as StdDuration};
use reifydb_value::value::duration::Duration;
pub(crate) fn fire(callback: &Option<Arc<dyn Fn() + Send + Sync>>) {
if let Some(callback) = callback {
callback();
}
}
pub(crate) fn backoff_millis(base_ms: u64, attempt: u32) -> u64 {
let factor = 1u64.checked_shl(attempt.saturating_sub(1).min(20)).unwrap_or(u64::MAX);
base_ms.saturating_mul(factor).min(30_000)
}
#[allow(clippy::disallowed_types)]
pub(crate) fn millis_to_std(ms: u64) -> StdDuration {
Duration::from_milliseconds(ms.min(i64::MAX as u64) as i64).unwrap().to_std()
}