diff --git a/tokio/src/runtime/driver.rs b/tokio/src/runtime/driver.rs index a72b25698..895b97902 100644 --- a/tokio/src/runtime/driver.rs +++ b/tokio/src/runtime/driver.rs @@ -109,6 +109,12 @@ impl Handle { .as_ref() .expect("A Tokio 1.x context was found, but timers are disabled. Call `enable_time` on the runtime builder to enable timers.") } + + cfg_test_util! { + pub(crate) fn clock(&self) -> &Clock { + &self.clock + } + } } } diff --git a/tokio/src/runtime/io/registration.rs b/tokio/src/runtime/io/registration.rs index 157e91096..a0f2a3492 100644 --- a/tokio/src/runtime/io/registration.rs +++ b/tokio/src/runtime/io/registration.rs @@ -73,7 +73,7 @@ impl Registration { interest: Interest, handle: scheduler::Handle, ) -> io::Result { - let shared = handle.io().add_source(io, interest)?; + let shared = handle.driver().io().add_source(io, interest)?; Ok(Registration { handle, shared }) } @@ -199,7 +199,7 @@ impl Registration { } fn handle(&self) -> &Handle { - self.handle.io() + self.handle.driver().io() } } diff --git a/tokio/src/runtime/scheduler/mod.rs b/tokio/src/runtime/scheduler/mod.rs index 12dbdd2f1..7ae64c34c 100644 --- a/tokio/src/runtime/scheduler/mod.rs +++ b/tokio/src/runtime/scheduler/mod.rs @@ -39,26 +39,6 @@ impl Handle { Handle::Disabled => unreachable!(), } } - - cfg_io_driver! { - #[track_caller] - pub(crate) fn io(&self) -> &crate::runtime::io::Handle { - self.driver().io() - } - } - - cfg_time! { - #[track_caller] - pub(crate) fn time(&self) -> &crate::runtime::time::Handle { - self.driver().time() - } - - cfg_test_util! { - pub(crate) fn clock(&self) -> &driver::Clock { - &self.driver().clock - } - } - } } cfg_rt! { diff --git a/tokio/src/runtime/time/entry.rs b/tokio/src/runtime/time/entry.rs index dbf778ed0..f0d613a3b 100644 --- a/tokio/src/runtime/time/entry.rs +++ b/tokio/src/runtime/time/entry.rs @@ -497,7 +497,7 @@ impl TimerEntry { #[track_caller] pub(crate) fn new(handle: &scheduler::Handle, deadline: Instant) -> Self { // Panic if the time driver is not enabled - let _ = handle.time(); + let _ = handle.driver().time(); let driver = handle.clone(); @@ -577,7 +577,7 @@ impl TimerEntry { } pub(crate) fn driver(&self) -> &super::Handle { - self.driver.time() + self.driver.driver().time() } } diff --git a/tokio/src/runtime/time/tests/mod.rs b/tokio/src/runtime/time/tests/mod.rs index 1ba95f13d..88c7d768d 100644 --- a/tokio/src/runtime/time/tests/mod.rs +++ b/tokio/src/runtime/time/tests/mod.rs @@ -50,7 +50,7 @@ fn single_timer() { let jh = thread::spawn(move || { let entry = TimerEntry::new( &handle_.inner, - handle_.inner.clock().now() + Duration::from_secs(1), + handle_.inner.driver().clock().now() + Duration::from_secs(1), ); pin!(entry); @@ -62,7 +62,7 @@ fn single_timer() { thread::yield_now(); - let handle = handle.inner.time(); + let handle = handle.inner.driver().time(); // This may or may not return Some (depending on how it races with the // thread). If it does return None, however, the timer should complete @@ -83,7 +83,7 @@ fn drop_timer() { let jh = thread::spawn(move || { let entry = TimerEntry::new( &handle_.inner, - handle_.inner.clock().now() + Duration::from_secs(1), + handle_.inner.driver().clock().now() + Duration::from_secs(1), ); pin!(entry); @@ -97,7 +97,7 @@ fn drop_timer() { thread::yield_now(); - let handle = handle.inner.time(); + let handle = handle.inner.driver().time(); // advance 2s in the future. handle.process_at_time(handle.time_source().now() + 2_000_000_000); @@ -116,7 +116,7 @@ fn change_waker() { let jh = thread::spawn(move || { let entry = TimerEntry::new( &handle_.inner, - handle_.inner.clock().now() + Duration::from_secs(1), + handle_.inner.driver().clock().now() + Duration::from_secs(1), ); pin!(entry); @@ -132,7 +132,7 @@ fn change_waker() { thread::yield_now(); - let handle = handle.inner.time(); + let handle = handle.inner.driver().time(); // advance 2s handle.process_at_time(handle.time_source().now() + 2_000_000_000); @@ -151,7 +151,7 @@ fn reset_future() { let handle_ = handle.clone(); let finished_early_ = finished_early.clone(); - let start = handle.inner.clock().now(); + let start = handle.inner.driver().clock().now(); let jh = thread::spawn(move || { let entry = TimerEntry::new(&handle_.inner, start + Duration::from_secs(1)); @@ -174,7 +174,7 @@ fn reset_future() { thread::yield_now(); - let handle = handle.inner.time(); + let handle = handle.inner.driver().time(); // This may or may not return a wakeup time. handle.process_at_time( @@ -217,7 +217,7 @@ fn poll_process_levels() { for i in 0..normal_or_miri(1024, 64) { let mut entry = Box::pin(TimerEntry::new( &handle.inner, - handle.inner.clock().now() + Duration::from_millis(i), + handle.inner.driver().clock().now() + Duration::from_millis(i), )); let _ = entry @@ -228,7 +228,7 @@ fn poll_process_levels() { } for t in 1..normal_or_miri(1024, 64) { - handle.inner.time().process_at_time(t as u64); + handle.inner.driver().time().process_at_time(t as u64); for (deadline, future) in entries.iter_mut().enumerate() { let mut context = Context::from_waker(noop_waker_ref()); @@ -251,11 +251,11 @@ fn poll_process_levels_targeted() { let e1 = TimerEntry::new( &handle.inner, - handle.inner.clock().now() + Duration::from_millis(193), + handle.inner.driver().clock().now() + Duration::from_millis(193), ); pin!(e1); - let handle = handle.inner.time(); + let handle = handle.inner.driver().time(); handle.process_at_time(62); assert!(e1.as_mut().poll_elapsed(&mut context).is_pending()); diff --git a/tokio/src/time/clock.rs b/tokio/src/time/clock.rs index 01ab50d38..0343c4f4c 100644 --- a/tokio/src/time/clock.rs +++ b/tokio/src/time/clock.rs @@ -36,7 +36,7 @@ cfg_test_util! { use crate::runtime::Handle; match Handle::try_current() { - Ok(handle) => Some(handle.inner.clock().clone()), + Ok(handle) => Some(handle.inner.driver().clock().clone()), Err(ref e) if e.is_missing_context() => None, Err(_) => panic!("{}", crate::util::error::THREAD_LOCAL_DESTROYED_ERROR), } diff --git a/tokio/src/time/sleep.rs b/tokio/src/time/sleep.rs index 5eb99c559..a20651373 100644 --- a/tokio/src/time/sleep.rs +++ b/tokio/src/time/sleep.rs @@ -261,7 +261,7 @@ impl Sleep { #[cfg(all(tokio_unstable, feature = "tracing"))] let inner = { - let handle = &handle.time(); + let handle = &handle.driver().time(); let time_source = handle.time_source(); let deadline_tick = time_source.deadline_to_tick(deadline); let duration = deadline_tick.saturating_sub(time_source.now());