From 0893841f31542b2b04c5050a8a4a3c45cf867e55 Mon Sep 17 00:00:00 2001 From: Juan Alvarez Date: Mon, 12 Oct 2020 12:21:44 -0500 Subject: time: move error types into `time::error` (#2938) --- tokio/src/stream/timeout.rs | 2 +- tokio/src/time/driver/atomic_stack.rs | 2 +- tokio/src/time/driver/entry.rs | 2 +- tokio/src/time/driver/mod.rs | 4 ++-- tokio/src/time/error.rs | 36 +++++++++++++++++++++++++++++++++++ tokio/src/time/mod.rs | 5 ++--- tokio/src/time/sleep.rs | 2 +- tokio/src/time/timeout.rs | 33 ++------------------------------ tokio/src/time/wheel/mod.rs | 8 +------- 9 files changed, 47 insertions(+), 47 deletions(-) (limited to 'tokio') diff --git a/tokio/src/stream/timeout.rs b/tokio/src/stream/timeout.rs index b16000c6..669973ff 100644 --- a/tokio/src/stream/timeout.rs +++ b/tokio/src/stream/timeout.rs @@ -1,5 +1,5 @@ use crate::stream::{Fuse, Stream}; -use crate::time::{Elapsed, Instant, Sleep}; +use crate::time::{error::Elapsed, Instant, Sleep}; use core::future::Future; use core::pin::Pin; diff --git a/tokio/src/time/driver/atomic_stack.rs b/tokio/src/time/driver/atomic_stack.rs index c1972a76..5dcc4726 100644 --- a/tokio/src/time/driver/atomic_stack.rs +++ b/tokio/src/time/driver/atomic_stack.rs @@ -1,5 +1,5 @@ use crate::time::driver::Entry; -use crate::time::Error; +use crate::time::error::Error; use std::ptr; use std::sync::atomic::AtomicPtr; diff --git a/tokio/src/time/driver/entry.rs b/tokio/src/time/driver/entry.rs index 20a3a8c5..b40cae73 100644 --- a/tokio/src/time/driver/entry.rs +++ b/tokio/src/time/driver/entry.rs @@ -1,7 +1,7 @@ use crate::loom::sync::atomic::AtomicU64; use crate::sync::AtomicWaker; use crate::time::driver::{Handle, Inner}; -use crate::time::{Duration, Error, Instant}; +use crate::time::{error::Error, Duration, Instant}; use std::cell::UnsafeCell; use std::ptr; diff --git a/tokio/src/time/driver/mod.rs b/tokio/src/time/driver/mod.rs index 94e905b4..fdab7df3 100644 --- a/tokio/src/time/driver/mod.rs +++ b/tokio/src/time/driver/mod.rs @@ -11,7 +11,7 @@ pub(crate) use self::handle::Handle; use crate::loom::sync::atomic::{AtomicU64, AtomicUsize}; use crate::park::{Park, Unpark}; -use crate::time::{wheel, Error}; +use crate::time::{error::Error, wheel}; use crate::time::{Clock, Duration, Instant}; use std::sync::atomic::Ordering::{Acquire, Relaxed, Release, SeqCst}; @@ -204,7 +204,7 @@ where /// Fires the entry if it needs to, otherwise queue it to be processed later. fn add_entry(&mut self, entry: Arc, when: u64) { - use crate::time::wheel::InsertError; + use crate::time::error::InsertError; entry.set_when_internal(Some(when)); diff --git a/tokio/src/time/error.rs b/tokio/src/time/error.rs index 7154a330..24395c47 100644 --- a/tokio/src/time/error.rs +++ b/tokio/src/time/error.rs @@ -1,3 +1,5 @@ +//! Time error types. + use self::Kind::*; use std::error; use std::fmt; @@ -32,6 +34,18 @@ enum Kind { Invalid = 3, } +/// Error returned by `Timeout`. +#[derive(Debug, PartialEq)] +pub struct Elapsed(()); + +#[derive(Debug)] +pub(crate) enum InsertError { + Elapsed, + Invalid, +} + +// ===== impl Error ===== + impl Error { /// Creates an error representing a shutdown timer. pub fn shutdown() -> Error { @@ -90,3 +104,25 @@ impl fmt::Display for Error { write!(fmt, "{}", descr) } } + +// ===== impl Elapsed ===== + +impl Elapsed { + pub(crate) fn new() -> Self { + Elapsed(()) + } +} + +impl fmt::Display for Elapsed { + fn fmt(&self, fmt: &mut fmt::Formatter<'_>) -> fmt::Result { + "deadline has elapsed".fmt(fmt) + } +} + +impl std::error::Error for Elapsed {} + +impl From for std::io::Error { + fn from(_err: Elapsed) -> std::io::Error { + std::io::ErrorKind::TimedOut.into() + } +} diff --git a/tokio/src/time/mod.rs b/tokio/src/time/mod.rs index 41148641..29af7175 100644 --- a/tokio/src/time/mod.rs +++ b/tokio/src/time/mod.rs @@ -98,8 +98,7 @@ pub use sleep::{sleep, sleep_until, Sleep}; pub(crate) mod driver; -mod error; -pub use error::Error; +pub mod error; mod instant; pub use self::instant::Instant; @@ -109,7 +108,7 @@ pub use interval::{interval, interval_at, Interval}; mod timeout; #[doc(inline)] -pub use timeout::{timeout, timeout_at, Elapsed, Timeout}; +pub use timeout::{timeout, timeout_at, Timeout}; mod wheel; diff --git a/tokio/src/time/sleep.rs b/tokio/src/time/sleep.rs index 9f836b0f..d3234a18 100644 --- a/tokio/src/time/sleep.rs +++ b/tokio/src/time/sleep.rs @@ -1,5 +1,5 @@ use crate::time::driver::{Entry, Handle}; -use crate::time::{Duration, Error, Instant}; +use crate::time::{error::Error, Duration, Instant}; use std::future::Future; use std::pin::Pin; diff --git a/tokio/src/time/timeout.rs b/tokio/src/time/timeout.rs index d35121ac..cf09b071 100644 --- a/tokio/src/time/timeout.rs +++ b/tokio/src/time/timeout.rs @@ -4,10 +4,9 @@ //! //! [`Timeout`]: struct@Timeout -use crate::time::{sleep_until, Duration, Instant, Sleep}; +use crate::time::{error::Elapsed, sleep_until, Duration, Instant, Sleep}; use pin_project_lite::pin_project; -use std::fmt; use std::future::Future; use std::pin::Pin; use std::task::{self, Poll}; @@ -112,18 +111,6 @@ pin_project! { } } -/// Error returned by `Timeout`. -#[derive(Debug, PartialEq)] -pub struct Elapsed(()); - -impl Elapsed { - // Used on StreamExt::timeout - #[allow(unused)] - pub(crate) fn new() -> Self { - Elapsed(()) - } -} - impl Timeout { pub(crate) fn new_with_delay(value: T, delay: Sleep) -> Timeout { Timeout { value, delay } @@ -161,24 +148,8 @@ where // Now check the timer match me.delay.poll(cx) { - Poll::Ready(()) => Poll::Ready(Err(Elapsed(()))), + Poll::Ready(()) => Poll::Ready(Err(Elapsed::new())), Poll::Pending => Poll::Pending, } } } - -// ===== impl Elapsed ===== - -impl fmt::Display for Elapsed { - fn fmt(&self, fmt: &mut fmt::Formatter<'_>) -> fmt::Result { - "deadline has elapsed".fmt(fmt) - } -} - -impl std::error::Error for Elapsed {} - -impl From for std::io::Error { - fn from(_err: Elapsed) -> std::io::Error { - std::io::ErrorKind::TimedOut.into() - } -} diff --git a/tokio/src/time/wheel/mod.rs b/tokio/src/time/wheel/mod.rs index 18559dfd..85ed2f11 100644 --- a/tokio/src/time/wheel/mod.rs +++ b/tokio/src/time/wheel/mod.rs @@ -1,4 +1,4 @@ -use crate::time::driver::Entry; +use crate::time::{driver::Entry, error::InsertError}; mod level; pub(crate) use self::level::Expiration; @@ -50,12 +50,6 @@ const NUM_LEVELS: usize = 6; /// The maximum duration of a `Sleep` const MAX_DURATION: u64 = (1 << (6 * NUM_LEVELS)) - 1; -#[derive(Debug)] -pub(crate) enum InsertError { - Elapsed, - Invalid, -} - impl Wheel { /// Create a new timing wheel pub(crate) fn new() -> Wheel { -- cgit v1.2.3