use crate::progress::{Bar, BarExt, RichProgress};
use std::sync::{Arc, Mutex};
use std::thread;
pub fn bar(pb: Bar, maxinterval: f32) -> (Arc<Mutex<Bar>>, thread::JoinHandle<()>) {
let pb_arc = Arc::new(Mutex::new(pb));
let pb_arc_clone = pb_arc.clone();
let handle = thread::spawn(move || loop {
thread::sleep(std::time::Duration::from_secs_f32(maxinterval));
let mut pb_monitor = pb_arc_clone.lock().unwrap();
if pb_monitor.completed() {
break;
}
pb_monitor.refresh();
});
(pb_arc, handle)
}
pub fn rich(
pb: RichProgress,
maxinterval: f32,
) -> (Arc<Mutex<RichProgress>>, thread::JoinHandle<()>) {
let pb_arc = Arc::new(Mutex::new(pb));
let pb_arc_clone = pb_arc.clone();
let handle = thread::spawn(move || loop {
thread::sleep(std::time::Duration::from_secs_f32(maxinterval));
let mut pb_monitor = pb_arc_clone.lock().unwrap();
if pb_monitor.pb.completed() {
break;
}
pb_monitor.refresh();
});
(pb_arc, handle)
}