diff options
Diffstat (limited to 'tokio/src/io/driver/scheduled_io.rs')
-rw-r--r-- | tokio/src/io/driver/scheduled_io.rs | 13 |
1 files changed, 10 insertions, 3 deletions
diff --git a/tokio/src/io/driver/scheduled_io.rs b/tokio/src/io/driver/scheduled_io.rs index ed3adc39..75d56232 100644 --- a/tokio/src/io/driver/scheduled_io.rs +++ b/tokio/src/io/driver/scheduled_io.rs @@ -1,4 +1,4 @@ -use super::{Ready, ReadyEvent, Tick}; +use super::{Interest, Ready, ReadyEvent, Tick}; use crate::loom::sync::atomic::AtomicUsize; use crate::loom::sync::Mutex; use crate::util::bit; @@ -49,8 +49,6 @@ struct Waiters { } cfg_io_readiness! { - use crate::io::Interest; - #[derive(Debug)] struct Waiter { pointers: linked_list::Pointers<Waiter>, @@ -280,6 +278,15 @@ impl ScheduledIo { } } + pub(super) fn ready_event(&self, interest: Interest) -> ReadyEvent { + let curr = self.readiness.load(Acquire); + + ReadyEvent { + tick: TICK.unpack(curr) as u8, + ready: interest.mask() & Ready::from_usize(READINESS.unpack(curr)), + } + } + /// Poll version of checking readiness for a certain direction. /// /// These are to support `AsyncRead` and `AsyncWrite` polling methods, |