conditional wait

This commit is contained in:
WanderingPenwing 2024-07-31 16:18:27 +02:00
parent 9fffc90bce
commit 6fb8c64e64

View file

@ -37,26 +37,26 @@ async fn main() {
let notify = Arc::new(Notify::new());
let notify_cloned: Arc<Notify> = Arc::clone(&notify);
tokio::spawn(async move {
tokio::spawn(async move {
loop {
sleep(Duration::from_secs(3)).await;
let battery_charging = battery_2.time_to_empty().is_none();
battery_2.refresh().expect("could not refresh battery");
let connection_type = get_connection(&networks_2);
if battery_2.state_of_charge().value == 1.0 && connection_type != Connection::None {
sleep(Duration::from_secs(20)).await;
} else {
sleep(Duration::from_secs(2)).await;
}
battery_2.refresh().expect("could not refresh battery");
if battery_2.time_to_empty().is_none() != battery_charging && battery_2.state_of_charge().value != 1.0 {
notify_cloned.notify_one();
println!("battery notif");
continue
}
let connection_type = get_connection(&networks_2);
networks_2.refresh_list();
if connection_type != get_connection(&networks_2) {
notify_cloned.notify_one();
println!("network notif");
}
}
});
@ -80,12 +80,8 @@ async fn main() {
let sleep_or_notify = sleep(Duration::from_secs((60 - Local::now().second()).into()));
tokio::select! {
_ = sleep_or_notify => {
println!("60 seconds elapsed");
}
_ = notify.notified() => {
println!("waking up early");
}
_ = sleep_or_notify => {}
_ = notify.notified() => {}
}
}
}