Skip to content

Commit

Permalink
WIP change mutability requirement on poll
Browse files Browse the repository at this point in the history
  • Loading branch information
carllerche committed Apr 29, 2016
1 parent 1a89cb8 commit 0bc141c
Show file tree
Hide file tree
Showing 17 changed files with 112 additions and 102 deletions.
2 changes: 1 addition & 1 deletion src/event_loop.rs
Original file line number Diff line number Diff line change
Expand Up @@ -107,7 +107,7 @@ impl<H: Handler> EventLoop<H> {

fn configured(config: Config) -> io::Result<EventLoop<H>> {
// Create the IO poller
let mut poll = try!(Poll::new());
let poll = try!(Poll::new());

// Create the timer
let mut timer = Timer::new(
Expand Down
6 changes: 3 additions & 3 deletions src/io.rs
Original file line number Diff line number Diff line change
Expand Up @@ -6,11 +6,11 @@ pub use std::io::{Read, Write, Result, Error, ErrorKind};

/// A value that may be registered with an `EventLoop`
pub trait Evented {
fn register(&self, poll: &mut Poll, token: Token, interest: EventSet, opts: PollOpt) -> Result<()>;
fn register(&self, poll: &Poll, token: Token, interest: EventSet, opts: PollOpt) -> Result<()>;

fn reregister(&self, poll: &mut Poll, token: Token, interest: EventSet, opts: PollOpt) -> Result<()>;
fn reregister(&self, poll: &Poll, token: Token, interest: EventSet, opts: PollOpt) -> Result<()>;

fn deregister(&self, poll: &mut Poll) -> Result<()>;
fn deregister(&self, poll: &Poll) -> Result<()>;
}

pub trait TryRead {
Expand Down
12 changes: 6 additions & 6 deletions src/net/tcp.rs
Original file line number Diff line number Diff line change
Expand Up @@ -126,17 +126,17 @@ impl Write for TcpStream {
}

impl Evented for TcpStream {
fn register(&self, poll: &mut Poll, token: Token,
fn register(&self, poll: &Poll, token: Token,
interest: EventSet, opts: PollOpt) -> io::Result<()> {
self.sys.register(poll, token, interest, opts)
}

fn reregister(&self, poll: &mut Poll, token: Token,
fn reregister(&self, poll: &Poll, token: Token,
interest: EventSet, opts: PollOpt) -> io::Result<()> {
self.sys.reregister(poll, token, interest, opts)
}

fn deregister(&self, poll: &mut Poll) -> io::Result<()> {
fn deregister(&self, poll: &Poll) -> io::Result<()> {
self.sys.deregister(poll)
}
}
Expand Down Expand Up @@ -224,17 +224,17 @@ impl TcpListener {
}

impl Evented for TcpListener {
fn register(&self, poll: &mut Poll, token: Token,
fn register(&self, poll: &Poll, token: Token,
interest: EventSet, opts: PollOpt) -> io::Result<()> {
self.sys.register(poll, token, interest, opts)
}

fn reregister(&self, poll: &mut Poll, token: Token,
fn reregister(&self, poll: &Poll, token: Token,
interest: EventSet, opts: PollOpt) -> io::Result<()> {
self.sys.reregister(poll, token, interest, opts)
}

fn deregister(&self, poll: &mut Poll) -> io::Result<()> {
fn deregister(&self, poll: &Poll) -> io::Result<()> {
self.sys.deregister(poll)
}
}
Expand Down
6 changes: 3 additions & 3 deletions src/net/udp.rs
Original file line number Diff line number Diff line change
Expand Up @@ -77,15 +77,15 @@ impl UdpSocket {
}

impl Evented for UdpSocket {
fn register(&self, poll: &mut Poll, token: Token, interest: EventSet, opts: PollOpt) -> io::Result<()> {
fn register(&self, poll: &Poll, token: Token, interest: EventSet, opts: PollOpt) -> io::Result<()> {
self.sys.register(poll, token, interest, opts)
}

fn reregister(&self, poll: &mut Poll, token: Token, interest: EventSet, opts: PollOpt) -> io::Result<()> {
fn reregister(&self, poll: &Poll, token: Token, interest: EventSet, opts: PollOpt) -> io::Result<()> {
self.sys.reregister(poll, token, interest, opts)
}

fn deregister(&self, poll: &mut Poll) -> io::Result<()> {
fn deregister(&self, poll: &Poll) -> io::Result<()> {
self.sys.deregister(poll)
}
}
Expand Down
30 changes: 15 additions & 15 deletions src/net/unix.rs
Original file line number Diff line number Diff line change
Expand Up @@ -40,15 +40,15 @@ impl UnixSocket {
}

impl Evented for UnixSocket {
fn register(&self, poll: &mut Poll, token: Token, interest: EventSet, opts: PollOpt) -> io::Result<()> {
fn register(&self, poll: &Poll, token: Token, interest: EventSet, opts: PollOpt) -> io::Result<()> {
self.sys.register(poll, token, interest, opts)
}

fn reregister(&self, poll: &mut Poll, token: Token, interest: EventSet, opts: PollOpt) -> io::Result<()> {
fn reregister(&self, poll: &Poll, token: Token, interest: EventSet, opts: PollOpt) -> io::Result<()> {
self.sys.reregister(poll, token, interest, opts)
}

fn deregister(&self, poll: &mut Poll) -> io::Result<()> {
fn deregister(&self, poll: &Poll) -> io::Result<()> {
self.sys.deregister(poll)
}
}
Expand Down Expand Up @@ -132,15 +132,15 @@ impl Write for UnixStream {
}

impl Evented for UnixStream {
fn register(&self, poll: &mut Poll, token: Token, interest: EventSet, opts: PollOpt) -> io::Result<()> {
fn register(&self, poll: &Poll, token: Token, interest: EventSet, opts: PollOpt) -> io::Result<()> {
self.sys.register(poll, token, interest, opts)
}

fn reregister(&self, poll: &mut Poll, token: Token, interest: EventSet, opts: PollOpt) -> io::Result<()> {
fn reregister(&self, poll: &Poll, token: Token, interest: EventSet, opts: PollOpt) -> io::Result<()> {
self.sys.reregister(poll, token, interest, opts)
}

fn deregister(&self, poll: &mut Poll) -> io::Result<()> {
fn deregister(&self, poll: &Poll) -> io::Result<()> {
self.sys.deregister(poll)
}
}
Expand Down Expand Up @@ -182,15 +182,15 @@ impl UnixListener {
}

impl Evented for UnixListener {
fn register(&self, poll: &mut Poll, token: Token, interest: EventSet, opts: PollOpt) -> io::Result<()> {
fn register(&self, poll: &Poll, token: Token, interest: EventSet, opts: PollOpt) -> io::Result<()> {
self.sys.register(poll, token, interest, opts)
}

fn reregister(&self, poll: &mut Poll, token: Token, interest: EventSet, opts: PollOpt) -> io::Result<()> {
fn reregister(&self, poll: &Poll, token: Token, interest: EventSet, opts: PollOpt) -> io::Result<()> {
self.sys.reregister(poll, token, interest, opts)
}

fn deregister(&self, poll: &mut Poll) -> io::Result<()> {
fn deregister(&self, poll: &Poll) -> io::Result<()> {
self.sys.deregister(poll)
}
}
Expand Down Expand Up @@ -238,15 +238,15 @@ impl<'a> Read for &'a PipeReader {
}

impl Evented for PipeReader {
fn register(&self, poll: &mut Poll, token: Token, interest: EventSet, opts: PollOpt) -> io::Result<()> {
fn register(&self, poll: &Poll, token: Token, interest: EventSet, opts: PollOpt) -> io::Result<()> {
self.io.register(poll, token, interest, opts)
}

fn reregister(&self, poll: &mut Poll, token: Token, interest: EventSet, opts: PollOpt) -> io::Result<()> {
fn reregister(&self, poll: &Poll, token: Token, interest: EventSet, opts: PollOpt) -> io::Result<()> {
self.io.reregister(poll, token, interest, opts)
}

fn deregister(&self, poll: &mut Poll) -> io::Result<()> {
fn deregister(&self, poll: &Poll) -> io::Result<()> {
self.io.deregister(poll)
}
}
Expand Down Expand Up @@ -283,15 +283,15 @@ impl<'a> Write for &'a PipeWriter {
}

impl Evented for PipeWriter {
fn register(&self, poll: &mut Poll, token: Token, interest: EventSet, opts: PollOpt) -> io::Result<()> {
fn register(&self, poll: &Poll, token: Token, interest: EventSet, opts: PollOpt) -> io::Result<()> {
self.io.register(poll, token, interest, opts)
}

fn reregister(&self, poll: &mut Poll, token: Token, interest: EventSet, opts: PollOpt) -> io::Result<()> {
fn reregister(&self, poll: &Poll, token: Token, interest: EventSet, opts: PollOpt) -> io::Result<()> {
self.io.reregister(poll, token, interest, opts)
}

fn deregister(&self, poll: &mut Poll) -> io::Result<()> {
fn deregister(&self, poll: &Poll) -> io::Result<()> {
self.io.deregister(poll)
}
}
Expand Down
6 changes: 3 additions & 3 deletions src/notify.rs
Original file line number Diff line number Diff line change
Expand Up @@ -187,16 +187,16 @@ impl<M> NotifyInner<M> {
}

impl<M> Evented for Notify<M> {
fn register(&self, poll: &mut Poll, token: Token, interest: EventSet, opts: PollOpt) -> io::Result<()> {
fn register(&self, poll: &Poll, token: Token, interest: EventSet, opts: PollOpt) -> io::Result<()> {
assert!(opts.is_edge(), "awakener can only be registered using edge-triggered events");
self.inner.awaken.register(poll, token, interest, opts)
}

fn reregister(&self, _: &mut Poll, _: Token, _: EventSet, _: PollOpt) -> io::Result<()> {
fn reregister(&self, _: &Poll, _: Token, _: EventSet, _: PollOpt) -> io::Result<()> {
panic!("awakener is never reregistered");
}

fn deregister(&self, _: &mut Poll) -> io::Result<()> {
fn deregister(&self, _: &Poll) -> io::Result<()> {
panic!("awakener is never deregistered");
}
}
Expand Down
14 changes: 5 additions & 9 deletions src/poll.rs
Original file line number Diff line number Diff line change
Expand Up @@ -180,19 +180,19 @@ impl Poll {
// TODO: Allow config to be passed in
let config = Config::default();

let mut poll = Poll {
let poll = Poll {
selector: try!(sys::Selector::new()),
readiness_queue: try!(ReadinessQueue::new(&config)),
events: sys::Events::new(),
};

// Register the notification wakeup FD with the IO poller
// try!(poll.register(&poll.readiness_queue.inner().awakener, AWAKEN, EventSet::readable() | EventSet::writable() , PollOpt::edge()));
try!(poll.register(&poll.readiness_queue.inner().awakener, AWAKEN, EventSet::readable(), PollOpt::edge()));

Ok(poll)
}

pub fn register<E: ?Sized>(&mut self, io: &E, token: Token, interest: EventSet, opts: PollOpt) -> io::Result<()>
pub fn register<E: ?Sized>(&self, io: &E, token: Token, interest: EventSet, opts: PollOpt) -> io::Result<()>
where E: Evented
{
/*
Expand All @@ -208,7 +208,7 @@ impl Poll {
Ok(())
}

pub fn reregister<E: ?Sized>(&mut self, io: &E, token: Token, interest: EventSet, opts: PollOpt) -> io::Result<()>
pub fn reregister<E: ?Sized>(&self, io: &E, token: Token, interest: EventSet, opts: PollOpt) -> io::Result<()>
where E: Evented
{
trace!("registering with poller");
Expand All @@ -219,7 +219,7 @@ impl Poll {
Ok(())
}

pub fn deregister<E: ?Sized>(&mut self, io: &E) -> io::Result<()>
pub fn deregister<E: ?Sized>(&self, io: &E) -> io::Result<()>
where E: Evented
{
trace!("deregistering IO with poller");
Expand Down Expand Up @@ -303,10 +303,6 @@ pub fn selector(poll: &Poll) -> &sys::Selector {
&poll.selector
}

pub fn selector_mut(poll: &mut Poll) -> &mut sys::Selector {
&mut poll.selector
}

/*
*
* ===== Registration =====
Expand Down
6 changes: 3 additions & 3 deletions src/sys/unix/awakener.rs
Original file line number Diff line number Diff line change
Expand Up @@ -48,15 +48,15 @@ mod pipe {
}

impl Evented for Awakener {
fn register(&self, poll: &mut Poll, token: Token, interest: EventSet, opts: PollOpt) -> io::Result<()> {
fn register(&self, poll: &Poll, token: Token, interest: EventSet, opts: PollOpt) -> io::Result<()> {
self.reader().register(poll, token, interest, opts)
}

fn reregister(&self, poll: &mut Poll, token: Token, interest: EventSet, opts: PollOpt) -> io::Result<()> {
fn reregister(&self, poll: &Poll, token: Token, interest: EventSet, opts: PollOpt) -> io::Result<()> {
self.reader().reregister(poll, token, interest, opts)
}

fn deregister(&self, poll: &mut Poll) -> io::Result<()> {
fn deregister(&self, poll: &Poll) -> io::Result<()> {
self.reader().deregister(poll)
}
}
Expand Down
12 changes: 6 additions & 6 deletions src/sys/unix/eventedfd.rs
Original file line number Diff line number Diff line change
Expand Up @@ -12,15 +12,15 @@ use std::os::unix::io::RawFd;
pub struct EventedFd<'a>(pub &'a RawFd);

impl<'a> Evented for EventedFd<'a> {
fn register(&self, poll: &mut Poll, token: Token, interest: EventSet, opts: PollOpt) -> io::Result<()> {
poll::selector_mut(poll).register(*self.0, token, interest, opts)
fn register(&self, poll: &Poll, token: Token, interest: EventSet, opts: PollOpt) -> io::Result<()> {
poll::selector(poll).register(*self.0, token, interest, opts)
}

fn reregister(&self, poll: &mut Poll, token: Token, interest: EventSet, opts: PollOpt) -> io::Result<()> {
poll::selector_mut(poll).reregister(*self.0, token, interest, opts)
fn reregister(&self, poll: &Poll, token: Token, interest: EventSet, opts: PollOpt) -> io::Result<()> {
poll::selector(poll).reregister(*self.0, token, interest, opts)
}

fn deregister(&self, poll: &mut Poll) -> io::Result<()> {
poll::selector_mut(poll).deregister(*self.0)
fn deregister(&self, poll: &Poll) -> io::Result<()> {
poll::selector(poll).deregister(*self.0)
}
}
12 changes: 6 additions & 6 deletions src/sys/unix/io.rs
Original file line number Diff line number Diff line change
Expand Up @@ -44,16 +44,16 @@ impl AsRawFd for Io {
}

impl Evented for Io {
fn register(&self, poll: &mut Poll, token: Token, interest: EventSet, opts: PollOpt) -> io::Result<()> {
poll::selector_mut(poll).register(self.fd, token, interest, opts)
fn register(&self, poll: &Poll, token: Token, interest: EventSet, opts: PollOpt) -> io::Result<()> {
poll::selector(poll).register(self.fd, token, interest, opts)
}

fn reregister(&self, poll: &mut Poll, token: Token, interest: EventSet, opts: PollOpt) -> io::Result<()> {
poll::selector_mut(poll).reregister(self.fd, token, interest, opts)
fn reregister(&self, poll: &Poll, token: Token, interest: EventSet, opts: PollOpt) -> io::Result<()> {
poll::selector(poll).reregister(self.fd, token, interest, opts)
}

fn deregister(&self, poll: &mut Poll) -> io::Result<()> {
poll::selector_mut(poll).deregister(self.fd)
fn deregister(&self, poll: &Poll) -> io::Result<()> {
poll::selector(poll).deregister(self.fd)
}
}

Expand Down
Loading

0 comments on commit 0bc141c

Please sign in to comment.