Update to mio master

This commit is contained in:
Alex Crichton
2016-08-27 12:33:31 -07:00
parent b9395808be
commit c820d67d66
4 changed files with 13 additions and 17 deletions
+2 -2
View File
@@ -90,7 +90,7 @@ impl<T> mio::Evented for Receiver<T> {
fn register(&self, fn register(&self,
poll: &mio::Poll, poll: &mio::Poll,
token: mio::Token, token: mio::Token,
interest: mio::EventSet, interest: mio::Ready,
opts: mio::PollOpt) -> io::Result<()> { opts: mio::PollOpt) -> io::Result<()> {
self.ctl.register(poll, token, interest, opts) self.ctl.register(poll, token, interest, opts)
} }
@@ -98,7 +98,7 @@ impl<T> mio::Evented for Receiver<T> {
fn reregister(&self, fn reregister(&self,
poll: &mio::Poll, poll: &mio::Poll,
token: mio::Token, token: mio::Token,
interest: mio::EventSet, interest: mio::Ready,
opts: mio::PollOpt) -> io::Result<()> { opts: mio::PollOpt) -> io::Result<()> {
self.ctl.reregister(poll, token, interest, opts) self.ctl.reregister(poll, token, interest, opts)
} }
+5 -6
View File
@@ -121,11 +121,11 @@ impl Loop {
let io = try!(mio::Poll::new()); let io = try!(mio::Poll::new());
try!(io.register(&rx, try!(io.register(&rx,
mio::Token(0), mio::Token(0),
mio::EventSet::readable(), mio::Ready::readable(),
mio::PollOpt::edge())); mio::PollOpt::edge()));
let pair = mio::Registration::new(&io, let pair = mio::Registration::new(&io,
mio::Token(1), mio::Token(1),
mio::EventSet::readable(), mio::Ready::readable(),
mio::PollOpt::level()); mio::PollOpt::level());
let (registration, readiness) = pair; let (registration, readiness) = pair;
Ok(Loop { Ok(Loop {
@@ -198,7 +198,7 @@ impl Loop {
impl Notify for MyNotify { impl Notify for MyNotify {
fn notify(&self) { fn notify(&self) {
self.0.set_readiness(mio::EventSet::readable()) self.0.set_readiness(mio::Ready::readable())
.expect("failed to set readiness"); .expect("failed to set readiness");
} }
} }
@@ -218,7 +218,7 @@ impl Loop {
// to see if it's done. If it's not then the event loop will turn again. // to see if it's done. If it's not then the event loop will turn again.
let mut res = None; let mut res = None;
self._run(&mut || { self._run(&mut || {
ready.set_readiness(mio::EventSet::none()) ready.set_readiness(mio::Ready::none())
.expect("failed to set readiness"); .expect("failed to set readiness");
assert!(res.is_none()); assert!(res.is_none());
match task.enter(|| f.poll()) { match task.enter(|| f.poll()) {
@@ -368,8 +368,7 @@ impl Loop {
let entry = dispatch.vacant_entry().unwrap(); let entry = dispatch.vacant_entry().unwrap();
try!(self.io.register(source, try!(self.io.register(source,
mio::Token(entry.index()), mio::Token(entry.index()),
mio::EventSet::readable() | mio::Ready::readable() | mio::Ready::writable(),
mio::EventSet::writable(),
mio::PollOpt::edge())); mio::PollOpt::edge()));
Ok((sched.readiness.clone(), entry.insert(sched).index())) Ok((sched.readiness.clone(), entry.insert(sched).index()))
} }
+3 -2
View File
@@ -18,6 +18,9 @@ extern crate log;
mod slot; mod slot;
mod lock; mod lock;
#[macro_use]
pub mod io;
mod channel; mod channel;
mod event_loop; mod event_loop;
mod mpsc_queue; mod mpsc_queue;
@@ -27,8 +30,6 @@ mod timeout;
mod timer_wheel; mod timer_wheel;
mod udp; mod udp;
pub mod io;
pub use channel::{Sender, Receiver}; pub use channel::{Sender, Receiver};
pub use event_loop::{Loop, LoopPin, LoopHandle, AddSource, AddTimeout}; pub use event_loop::{Loop, LoopPin, LoopHandle, AddSource, AddTimeout};
pub use event_loop::{LoopData, AddLoopData, TimeoutToken, IoToken}; pub use event_loop::{LoopData, AddLoopData, TimeoutToken, IoToken};
+3 -7
View File
@@ -93,16 +93,12 @@ impl TcpListener {
fn poll(&mut self) -> Poll<Option<Self::Item>, io::Error> { fn poll(&mut self) -> Poll<Option<Self::Item>, io::Error> {
match self.inner.io.get_ref().accept() { match self.inner.io.get_ref().accept() {
Ok(Some(pair)) => { Ok(pair) => Poll::Ok(Some(pair)),
debug!("accepted a socket"); Err(ref e) if e.kind() == io::ErrorKind::WouldBlock => {
Poll::Ok(Some(pair))
}
Ok(None) => {
debug!("waiting to accept another socket");
self.inner.io.need_read(); self.inner.io.need_read();
Poll::NotReady Poll::NotReady
} }
Err(e) => Poll::Err(e), Err(e) => Poll::Err(e)
} }
} }
} }