Skip to content

Instantly share code, notes, and snippets.

@inre
Created August 10, 2015 08:42
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save inre/eb26401cc3b79bf22f6c to your computer and use it in GitHub Desktop.
Save inre/eb26401cc3b79bf22f6c to your computer and use it in GitHub Desktop.
MIO File
#[derive(Debug)]
pub struct Selector {
sys: File
}
impl FromRawFd for Selector {
unsafe fn from_raw_fd(fd: RawFd) -> Selector {
Selector { sys: File::from_raw_fd(fd) }
}
}
impl AsRawFd for Selector {
fn as_raw_fd(&self) -> RawFd {
self.sys.as_raw_fd()
}
}
impl Evented for Selector {
fn register(&self, selector: &mut mio::Selector, token: Token, interest: EventSet, opts: PollOpt) -> io::Result<()> {
selector.register(self.as_raw_fd(), token, interest, opts)
}
fn reregister(&self, selector: &mut mio::Selector, token: Token, interest: EventSet, opts: PollOpt) -> io::Result<()> {
selector.reregister(self.as_raw_fd(), token, interest, opts)
}
fn deregister(&self, selector: &mut mio::Selector) -> io::Result<()> {
selector.deregister(self.as_raw_fd())
}
}
impl Read for Selector {
fn read(&mut self, dst: &mut [u8]) -> io::Result<usize> {
self.sys.read(dst)
}
}
impl Write for Selector {
fn write(&mut self, src: &[u8]) -> io::Result<usize> {
self.sys.write(src)
}
fn flush(&mut self) -> io::Result<()> {
self.sys.flush()
}
}
impl Seek for Selector {
fn seek(&mut self, pos: io::SeekFrom) -> io::Result<u64> {
self.sys.seek(pos)
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment