Struct futures_ringbuf::RingBuffer [−][src]
Expand description
A RingBuffer that implements AsyncRead
and AsyncWrite
from the futures library.
This object is rather special in that it’s read and writes are connected to a single
ringbuffer. It’s good for low level unit tests for (eg. framing a connection with a
codec) and verifying that a codec writes the correct data, but it does not mock a full
network connection. Subtle things can go wrong, like when using AsyncRead::split
and
dropping the WriteHalf
, the ReadHalf
cannot detect that and the task won’t be woken up.
If you want to mock a network connection, use Endpoint.
Implementations
Create a new RingBuffercapacity != length
, similar
to Vec.
Trait Implementations
Will return Poll::Pending when the buffer is empty. Will be woken up by the AsyncWrite impl when new data is written or the writer is closed.
When the buffer (for network simulation) is closed and empty, or if you pass in a 0 byte buffer,
this will return Poll::Ready( Ok(0) )
.
This method is infallible.
Will return Poll::Pending when the buffer is full. AsyncRead impl will wake up this task
when new place is made.
This method returns a io::ErrorKind::NotConnected
error if called after poll_close
.
We are always flushed, this is a noop. This method is infallible.
Closes the stream. After this no more data can be send into it. This method is infallible.
The compiler cannot verify that the producer/consumer are from the same RingBuffer
object.
Obviously if you abuse this things won’t work as expected.
I added this so you can seed a buffer before passing it to futures_ringbuf.
Performs the conversion.
Auto Trait Implementations
impl<T> !RefUnwindSafe for RingBuffer<T>
impl<T> Send for RingBuffer<T> where
T: Send,
impl<T> Sync for RingBuffer<T> where
T: Send,
impl<T> Unpin for RingBuffer<T>
impl<T> !UnwindSafe for RingBuffer<T>
Blanket Implementations
impl<R> AsyncReadExt for R where
R: AsyncRead + ?Sized,
impl<R> AsyncReadExt for R where
R: AsyncRead + ?Sized,
fn chain<R>(self, next: R) -> Chain<Self, R> where
R: AsyncRead,
fn chain<R>(self, next: R) -> Chain<Self, R> where
R: AsyncRead,
Creates an adaptor which will chain this stream with another. Read more
Tries to read some bytes directly into the given buf
in asynchronous
manner, returning a future type. Read more
fn read_vectored(
&'a mut self,
bufs: &'a mut [IoSliceMut<'a>]
) -> ReadVectored<'a, Self> where
Self: Unpin,
fn read_vectored(
&'a mut self,
bufs: &'a mut [IoSliceMut<'a>]
) -> ReadVectored<'a, Self> where
Self: Unpin,
Creates a future which will read from the AsyncRead
into bufs
using vectored
IO operations. Read more
fn read_exact(&'a mut self, buf: &'a mut [u8]) -> ReadExact<'a, Self> where
Self: Unpin,
fn read_exact(&'a mut self, buf: &'a mut [u8]) -> ReadExact<'a, Self> where
Self: Unpin,
Creates a future which will read exactly enough bytes to fill buf
,
returning an error if end of file (EOF) is hit sooner. Read more
fn read_to_end(
&'a mut self,
buf: &'a mut Vec<u8, Global>
) -> ReadToEnd<'a, Self> where
Self: Unpin,
fn read_to_end(
&'a mut self,
buf: &'a mut Vec<u8, Global>
) -> ReadToEnd<'a, Self> where
Self: Unpin,
Creates a future which will read all the bytes from this AsyncRead
. Read more
fn read_to_string(&'a mut self, buf: &'a mut String) -> ReadToString<'a, Self> where
Self: Unpin,
fn read_to_string(&'a mut self, buf: &'a mut String) -> ReadToString<'a, Self> where
Self: Unpin,
Creates a future which will read all the bytes from this AsyncRead
. Read more
Helper method for splitting this read/write object into two halves. Read more
impl<W> AsyncWriteExt for W where
W: AsyncWrite + ?Sized,
impl<W> AsyncWriteExt for W where
W: AsyncWrite + ?Sized,
Creates a future which will entirely flush this AsyncWrite
. Read more
Creates a future which will entirely close this AsyncWrite
.
Creates a future which will write bytes from buf
into the object. Read more
fn write_vectored(
&'a mut self,
bufs: &'a [IoSlice<'a>]
) -> WriteVectored<'a, Self> where
Self: Unpin,
fn write_vectored(
&'a mut self,
bufs: &'a [IoSlice<'a>]
) -> WriteVectored<'a, Self> where
Self: Unpin,
Creates a future which will write bytes from bufs
into the object using vectored
IO operations. Read more
Write data into this object. Read more
Mutably borrows from an owned value. Read more
pub fn vzip(self) -> V