diff options
author | Carl Lerche <me@carllerche.com> | 2020-11-11 09:28:21 -0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-11-11 09:28:21 -0800 |
commit | ce891a4df17e632f7557dd0cd1f1e8da89bd6ae4 (patch) | |
tree | fa5478c0b3bacacfc65bfbadbe1cdb92234d5b5f /tokio/src/signal/unix/driver.rs | |
parent | d869e16990c5fc2cbda48b036708efa4b450e807 (diff) |
io: driver internal cleanup (#3124)
* Removes duplicated code by moving it to `Registration`.
* impl `Deref` for `PollEvented` to avoid `get_ref()`.
* Avoid extra waker clones in I/O driver.
* Add `Interest` wrapper around `mio::Interest`.
Diffstat (limited to 'tokio/src/signal/unix/driver.rs')
-rw-r--r-- | tokio/src/signal/unix/driver.rs | 10 |
1 files changed, 5 insertions, 5 deletions
diff --git a/tokio/src/signal/unix/driver.rs b/tokio/src/signal/unix/driver.rs index 8e5ed7d0..323bb9df 100644 --- a/tokio/src/signal/unix/driver.rs +++ b/tokio/src/signal/unix/driver.rs @@ -3,7 +3,7 @@ //! Signal driver use crate::io::driver::Driver as IoDriver; -use crate::io::PollEvented; +use crate::io::{Interest, PollEvented}; use crate::park::Park; use crate::signal::registry::globals; @@ -76,7 +76,7 @@ impl Driver { let receiver = UnixStream::from_std(original.try_clone()?); let receiver = PollEvented::new_with_interest_and_handle( receiver, - mio::Interest::READABLE | mio::Interest::WRITABLE, + Interest::READABLE | Interest::WRITABLE, park.handle(), )?; @@ -103,7 +103,7 @@ impl Driver { let waker = unsafe { Waker::from_raw(RawWaker::new(ptr::null(), &NOOP_WAKER_VTABLE)) }; let mut cx = Context::from_waker(&waker); - let ev = match self.receiver.poll_read_ready(&mut cx) { + let ev = match self.receiver.registration().poll_read_ready(&mut cx) { Poll::Ready(Ok(ev)) => ev, Poll::Ready(Err(e)) => panic!("reactor gone: {}", e), Poll::Pending => return, // No wake has arrived, bail @@ -113,7 +113,7 @@ impl Driver { // if another signal has come in. let mut buf = [0; 128]; loop { - match self.receiver.get_ref().read(&mut buf) { + match (&*self.receiver).read(&mut buf) { Ok(0) => panic!("EOF on self-pipe"), Ok(_) => continue, // Keep reading Err(e) if e.kind() == io::ErrorKind::WouldBlock => break, @@ -121,7 +121,7 @@ impl Driver { } } - self.receiver.clear_readiness(ev); + self.receiver.registration().clear_readiness(ev); // Broadcast any signals which were received globals().broadcast(); |