ralph_workflow/agents/
runtime.rs1use std::sync::Arc;
4use std::time::Duration;
5
6pub trait RetryTimerProvider: Send + Sync {
12 fn sleep(&self, duration: Duration);
13}
14
15pub trait RetryTimerProviderDebug: RetryTimerProvider + std::fmt::Debug {}
16impl<T: RetryTimerProvider + std::fmt::Debug> RetryTimerProviderDebug for T {}
17
18#[derive(Debug, Clone)]
20pub struct ProductionRetryTimer;
21
22impl RetryTimerProvider for ProductionRetryTimer {
23 fn sleep(&self, duration: Duration) {
24 std::thread::sleep(duration);
25 }
26}
27
28pub fn production_timer() -> Arc<dyn RetryTimerProviderDebug> {
30 Arc::new(ProductionRetryTimer)
31}
32
33pub fn do_sleep(duration: Duration) {
35 std::thread::sleep(duration);
36}
37
38pub fn get_env_var(key: &str) -> Option<String> {
40 std::env::var(key).ok()
41}