Trait tokio_core::io::Io
[−]
[src]
pub trait Io: Read + Write { fn poll_read(&mut self) -> Async<()> { ... } fn poll_write(&mut self) -> Async<()> { ... } fn framed<C: Codec>(self, codec: C) -> Framed<Self, C> where Self: Sized { ... } fn split(self) -> (ReadHalf<Self>, WriteHalf<Self>) where Self: Sized { ... } }
A trait for read/write I/O objects
This trait represents I/O object which are readable and writable. Additionally, they're associated with the ability to test whether they're readable or writable.
Importantly, the methods of this trait are intended to be used in conjuction with the current task of a future. Namely whenever any of them return a value that indicates "would block" the current future's task is arranged to receive a notification when the method would otherwise not indicate that it would block.
Provided Methods
fn poll_read(&mut self) -> Async<()>
Tests to see if this I/O object may be readable.
This method returns an Async<()>
indicating whether the object
might be readable. It is possible that even if this method returns
Async::Ready
that a call to read
would return a WouldBlock
error.
There is a default implementation for this function which always indicates that an I/O object is readable, but objects which can implement a finer grained version of this are recommended to do so.
If this function returns Async::NotReady
then the current future's
task is arranged to receive a notification when it might not return
NotReady
.
Panics
This method is likely to panic if called from outside the context of a future's task.
fn poll_write(&mut self) -> Async<()>
Tests to see if this I/O object may be writable.
This method returns an Async<()>
indicating whether the object
might be writable. It is possible that even if this method returns
Async::Ready
that a call to write
would return a WouldBlock
error.
There is a default implementation for this function which always indicates that an I/O object is writable, but objects which can implement a finer grained version of this are recommended to do so.
If this function returns Async::NotReady
then the current future's
task is arranged to receive a notification when it might not return
NotReady
.
Panics
This method is likely to panic if called from outside the context of a future's task.
fn framed<C: Codec>(self, codec: C) -> Framed<Self, C> where Self: Sized
Provides a Stream
and Sink
interface for reading and writing to this
Io
object, using Decode
and Encode
to read and write the raw data.
Raw I/O objects work with byte sequences, but higher-level code usually
wants to batch these into meaningful chunks, called "frames". This
method layers framing on top of an I/O object, by using the Codec
traits to handle encoding and decoding of messages frames. Note that
the incoming and outgoing frame types may be distinct.
This function returns a single object that is both Stream
and
Sink
; grouping this into a single object is often useful for layering
things like gzip or TLS, which require both read and write access to the
underlying object.
If you want to work more directly with the streams and sink, consider
calling split
on the Framed
returned by this method, which will
break them into separate objects, allowing them to interact more easily.
fn split(self) -> (ReadHalf<Self>, WriteHalf<Self>) where Self: Sized
Helper method for splitting this read/write object into two halves.
The two halves returned implement the Read
and Write
traits,
respectively.
Implementors
impl Io for TcpStream
impl<'a> Io for &'a TcpStream
impl<E: Read + Write> Io for PollEvented<E>
impl<'a, E> Io for &'a PollEvented<E> where &'a E: Read + Write