diff options
author | Gardner Vickers <gardner@vickers.me> | 2019-12-24 18:34:47 -0500 |
---|---|---|
committer | Carl Lerche <me@carllerche.com> | 2019-12-24 15:34:47 -0800 |
commit | 67bf9c36f347031ca05872d102a7f9abc8b465f0 (patch) | |
tree | 22c0f472b594382a1bb6fa186b7f40fe4c17013d /tokio/src/time/tests | |
parent | 101f770af33ae65820e1cc0e9b89d998b3c1317a (diff) |
rt: coalesce thread-locals used by the runtime (#1925)
Previously, thread-locals used by the various drivers were situated
with the driver code. This resulted in state being spread out and many
thread-locals being required to run a runtime.
This PR coalesces the thread-locals into a single struct.
Diffstat (limited to 'tokio/src/time/tests')
-rw-r--r-- | tokio/src/time/tests/mock_clock.rs | 27 |
1 files changed, 14 insertions, 13 deletions
diff --git a/tokio/src/time/tests/mock_clock.rs b/tokio/src/time/tests/mock_clock.rs index 966952f8..7f8c7eca 100644 --- a/tokio/src/time/tests/mock_clock.rs +++ b/tokio/src/time/tests/mock_clock.rs @@ -1,5 +1,6 @@ use crate::park::{Park, Unpark}; -use crate::time::driver::{self, Driver}; +use crate::runtime::context; +use crate::time::driver::Driver; use crate::time::{Clock, Duration, Instant}; use std::marker::PhantomData; @@ -78,18 +79,18 @@ impl MockClock { where F: FnOnce(&mut Handle) -> R, { - self.clock.enter(|| { - let park = self.time.mock_park(); - let timer = Driver::new(park, self.clock.clone()); - let handle = timer.handle(); - let _e = driver::set_default(&handle); - - let time = self.time.clone(); - - let mut handle = Handle::new(timer, time, self.clock.clone()); - f(&mut handle) - // lazy(|| Ok::<_, ()>(f(&mut handle))).wait().unwrap() - }) + let park = self.time.mock_park(); + let timer = Driver::new(park, self.clock.clone()); + let handle = timer.handle(); + let ctx = context::ThreadContext::clone_current(); + let _e = ctx + .with_clock(self.clock.clone()) + .with_time_handle(Some(handle.clone())) + .enter(); + + let time = self.time.clone(); + let mut handle = Handle::new(timer, time, self.clock.clone()); + f(&mut handle) } } |