Trait actix_codec::AsyncRead [−][src]
pub trait AsyncRead { pub fn poll_read(
self: Pin<&mut Self>,
cx: &mut Context<'_>,
buf: &mut ReadBuf<'_>
) -> Poll<Result<(), Error>>; }
Reads bytes from a source.
This trait is analogous to the std::io::Read
trait, but integrates with
the asynchronous task system. In particular, the poll_read
method,
unlike Read::read
, will automatically queue the current task for wakeup
and return if data is not yet available, rather than blocking the calling
thread.
Specifically, this means that the poll_read
function will return one of
the following:
-
Poll::Ready(Ok(()))
means that data was immediately read and placed into the output buffer. The amount of data read can be determined by the increase in the length of the slice returned byReadBuf::filled
. If the difference is 0, EOF has been reached. -
Poll::Pending
means that no data was read into the buffer provided. The I/O object is not currently readable but may become readable in the future. Most importantly, the current future’s task is scheduled to get unparked when the object is readable. This means that likeFuture::poll
you’ll receive a notification when the I/O object is readable again. -
Poll::Ready(Err(e))
for other errors are standard I/O errors coming from the underlying object.
This trait importantly means that the read
method only works in the
context of a future’s task. The object may panic if used outside of a task.
Utilities for working with AsyncRead
values are provided by
AsyncReadExt
.
Required methods
pub fn poll_read(
self: Pin<&mut Self>,
cx: &mut Context<'_>,
buf: &mut ReadBuf<'_>
) -> Poll<Result<(), Error>>
[src]
self: Pin<&mut Self>,
cx: &mut Context<'_>,
buf: &mut ReadBuf<'_>
) -> Poll<Result<(), Error>>
Attempts to read from the AsyncRead
into buf
.
On success, returns Poll::Ready(Ok(()))
and places data in the
unfilled portion of buf
. If no data was read (buf.filled().len()
is
unchanged), it implies that EOF has been reached.
If no data is available for reading, the method returns Poll::Pending
and arranges for the current task (via cx.waker()
) to receive a
notification when the object becomes readable or is closed.
Implementations on Foreign Types
impl<'_, T> AsyncRead for &'_ mut T where
T: AsyncRead + Unpin + ?Sized,
[src]
T: AsyncRead + Unpin + ?Sized,
pub fn poll_read(
self: Pin<&mut &'_ mut T>,
cx: &mut Context<'_>,
buf: &mut ReadBuf<'_>
) -> Poll<Result<(), Error>>
[src]
self: Pin<&mut &'_ mut T>,
cx: &mut Context<'_>,
buf: &mut ReadBuf<'_>
) -> Poll<Result<(), Error>>
impl<T> AsyncRead for Box<T, Global> where
T: AsyncRead + Unpin + ?Sized,
[src]
T: AsyncRead + Unpin + ?Sized,
pub fn poll_read(
self: Pin<&mut Box<T, Global>>,
cx: &mut Context<'_>,
buf: &mut ReadBuf<'_>
) -> Poll<Result<(), Error>>
[src]
self: Pin<&mut Box<T, Global>>,
cx: &mut Context<'_>,
buf: &mut ReadBuf<'_>
) -> Poll<Result<(), Error>>
impl<'_> AsyncRead for &'_ [u8]
[src]
pub fn poll_read(
self: Pin<&mut &'_ [u8]>,
_cx: &mut Context<'_>,
buf: &mut ReadBuf<'_>
) -> Poll<Result<(), Error>>
[src]
self: Pin<&mut &'_ [u8]>,
_cx: &mut Context<'_>,
buf: &mut ReadBuf<'_>
) -> Poll<Result<(), Error>>
impl<T> AsyncRead for Cursor<T> where
T: AsRef<[u8]> + Unpin,
[src]
T: AsRef<[u8]> + Unpin,
pub fn poll_read(
self: Pin<&mut Cursor<T>>,
_cx: &mut Context<'_>,
buf: &mut ReadBuf<'_>
) -> Poll<Result<(), Error>>
[src]
self: Pin<&mut Cursor<T>>,
_cx: &mut Context<'_>,
buf: &mut ReadBuf<'_>
) -> Poll<Result<(), Error>>
impl<P> AsyncRead for Pin<P> where
P: DerefMut + Unpin,
<P as Deref>::Target: AsyncRead,
[src]
P: DerefMut + Unpin,
<P as Deref>::Target: AsyncRead,
pub fn poll_read(
self: Pin<&mut Pin<P>>,
cx: &mut Context<'_>,
buf: &mut ReadBuf<'_>
) -> Poll<Result<(), Error>>
[src]
self: Pin<&mut Pin<P>>,
cx: &mut Context<'_>,
buf: &mut ReadBuf<'_>
) -> Poll<Result<(), Error>>
impl<L, R> AsyncRead for Either<L, R> where
L: AsyncRead,
R: AsyncRead,
[src]
L: AsyncRead,
R: AsyncRead,
pub fn poll_read(
self: Pin<&mut Either<L, R>>,
cx: &mut Context<'_>,
buf: &mut ReadBuf<'_>
) -> Poll<Result<(), Error>>
[src]
self: Pin<&mut Either<L, R>>,
cx: &mut Context<'_>,
buf: &mut ReadBuf<'_>
) -> Poll<Result<(), Error>>
impl<S, B, E> AsyncRead for StreamReader<S, B> where
E: Into<Error>,
S: Stream<Item = Result<B, E>>,
B: Buf,
[src]
E: Into<Error>,
S: Stream<Item = Result<B, E>>,
B: Buf,
pub fn poll_read(
self: Pin<&mut StreamReader<S, B>>,
cx: &mut Context<'_>,
buf: &mut ReadBuf<'_>
) -> Poll<Result<(), Error>>
[src]
self: Pin<&mut StreamReader<S, B>>,
cx: &mut Context<'_>,
buf: &mut ReadBuf<'_>
) -> Poll<Result<(), Error>>