pub struct EventedIo { /* private fields */ }
Expand description
Managed adaptor for a RawFd
providing an Evented
implementation.
Where EventedFd
does not take ownership of the file descriptor,
EventedIo
does. It will manage the lifecycle of the file descriptor, such
as closing it when dropped. Otherwise EventedFd
and EventedIo
are much
alike, since this uses EventedFd
internally.
You could see EventedIo
as an owned file descriptor, while EventedIo
is
a borrowed file descriptor.
EventedIo
can be created by calling from_raw_fd
, see the examples below.
Deregistering
EventedIo
will deregister itself when dropped, iff the file descriptor
is unique (i.e. it is not duplicated via dup(2)
).
Examples
use std::net::TcpListener;
use std::os::unix::io::{AsRawFd, FromRawFd, IntoRawFd};
use mio_st::event::{Evented, EventedId, Ready};
use mio_st::poll::{Interests, PollOption, Poller};
use mio_st::unix::EventedIo;
// Bind a listener from the standard library.
let listener = TcpListener::bind("127.0.0.1:0")?;
// Turn the into it's file descriptor. Note the use of **into**_raw_fd here,
// not **as**_raw_fd, because `EventedIo` will manage the lifetime for us.
let listener_fd = listener.into_raw_fd();
// Now we can let `EventedIo` manage the lifetime for us.
let mut evented_listener = unsafe { EventedIo::from_raw_fd(listener_fd) };
let mut poller = Poller::new()?;
// Register the listener using `EventedFd`.
poller.register(&mut evented_listener, EventedId(0), Interests::READABLE, PollOption::Edge)?;
Trait Implementations§
source§impl Evented for EventedIo
impl Evented for EventedIo
source§impl IntoRawFd for EventedIo
impl IntoRawFd for EventedIo
source§fn into_raw_fd(self) -> RawFd
fn into_raw_fd(self) -> RawFd
Consumes this object, returning the raw underlying file descriptor. Read more
source§impl Read for EventedIo
impl Read for EventedIo
source§fn read(&mut self, dst: &mut [u8]) -> Result<usize>
fn read(&mut self, dst: &mut [u8]) -> Result<usize>
Pull some bytes from this source into the specified buffer, returning
how many bytes were read. Read more
1.36.0 · source§fn read_vectored(&mut self, bufs: &mut [IoSliceMut<'_>]) -> Result<usize, Error>
fn read_vectored(&mut self, bufs: &mut [IoSliceMut<'_>]) -> Result<usize, Error>
Like
read
, except that it reads into a slice of buffers. Read moresource§fn is_read_vectored(&self) -> bool
fn is_read_vectored(&self) -> bool
🔬This is a nightly-only experimental API. (
can_vector
)1.0.0 · source§fn read_to_end(&mut self, buf: &mut Vec<u8, Global>) -> Result<usize, Error>
fn read_to_end(&mut self, buf: &mut Vec<u8, Global>) -> Result<usize, Error>
Read all bytes until EOF in this source, placing them into
buf
. Read more1.0.0 · source§fn read_to_string(&mut self, buf: &mut String) -> Result<usize, Error>
fn read_to_string(&mut self, buf: &mut String) -> Result<usize, Error>
Read all bytes until EOF in this source, appending them to
buf
. Read more1.6.0 · source§fn read_exact(&mut self, buf: &mut [u8]) -> Result<(), Error>
fn read_exact(&mut self, buf: &mut [u8]) -> Result<(), Error>
Read the exact number of bytes required to fill
buf
. Read moresource§fn read_buf(&mut self, buf: BorrowedCursor<'_>) -> Result<(), Error>
fn read_buf(&mut self, buf: BorrowedCursor<'_>) -> Result<(), Error>
🔬This is a nightly-only experimental API. (
read_buf
)Pull some bytes from this source into the specified buffer. Read more
source§fn read_buf_exact(&mut self, cursor: BorrowedCursor<'_>) -> Result<(), Error>
fn read_buf_exact(&mut self, cursor: BorrowedCursor<'_>) -> Result<(), Error>
🔬This is a nightly-only experimental API. (
read_buf
)Read the exact number of bytes required to fill
cursor
. Read more1.0.0 · source§fn by_ref(&mut self) -> &mut Selfwhere
Self: Sized,
fn by_ref(&mut self) -> &mut Selfwhere
Self: Sized,
Creates a “by reference” adaptor for this instance of
Read
. Read moresource§impl Write for EventedIo
impl Write for EventedIo
source§fn write(&mut self, src: &[u8]) -> Result<usize>
fn write(&mut self, src: &[u8]) -> Result<usize>
Write a buffer into this writer, returning how many bytes were written. Read more
source§fn flush(&mut self) -> Result<()>
fn flush(&mut self) -> Result<()>
Flush this output stream, ensuring that all intermediately buffered
contents reach their destination. Read more
source§fn is_write_vectored(&self) -> bool
fn is_write_vectored(&self) -> bool
🔬This is a nightly-only experimental API. (
can_vector
)1.0.0 · source§fn write_all(&mut self, buf: &[u8]) -> Result<(), Error>
fn write_all(&mut self, buf: &[u8]) -> Result<(), Error>
Attempts to write an entire buffer into this writer. Read more
source§fn write_all_vectored(&mut self, bufs: &mut [IoSlice<'_>]) -> Result<(), Error>
fn write_all_vectored(&mut self, bufs: &mut [IoSlice<'_>]) -> Result<(), Error>
🔬This is a nightly-only experimental API. (
write_all_vectored
)Attempts to write multiple buffers into this writer. Read more