Browse Source

Minor style improvements

master
Adrian Heine 1 year ago
parent
commit
e569bdb416
  1. 34
      src/async_utils.rs
  2. 3
      src/setup/setup.rs

34
src/async_utils.rs

@ -36,26 +36,20 @@ impl Future for TimerFuture {
type Output = ();
fn poll(self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll<Self::Output> {
let mut state = self.state.lock().unwrap();
if matches!(*state, State::Completed) {
return Poll::Ready(());
}
if let State::NotStarted(duration) = *state {
let thread_state = self.state.clone();
thread::spawn(move || {
thread::sleep(duration);
let mut state = thread_state.lock().unwrap();
let waker = if let State::Running(waker) = &*state {
Some(waker.clone())
} else {
None
};
*state = State::Completed;
if let Some(w) = waker {
w.wake();
}
});
}
match *state {
State::Completed => return Poll::Ready(()),
State::NotStarted(duration) => {
let thread_state = self.state.clone();
thread::spawn(move || {
thread::sleep(duration);
let mut state = thread_state.lock().unwrap();
if let State::Running(waker) = std::mem::replace(&mut *state, State::Completed) {
waker.wake();
};
});
}
State::Running(_) => {}
};
*state = State::Running(cx.waker().clone());
Poll::Pending

3
src/setup/setup.rs

@ -68,8 +68,7 @@ impl<L: 'static, B: 'static, SR: 'static, Rs: Hash + Eq + 'static, As: 'static>
resources.insert(storable_resource, future.clone());
drop(resources);
trace!(logger, "Resource already added");
let (t, did_run) = future.await;
Ok((t, did_run))
Ok(future.await)
} else {
let inner_weak = Rc::downgrade(&self.0);
let logger_weak = Rc::downgrade(logger);

Loading…
Cancel
Save