Struct futures_ringbuf::RingBuffer[][src]

pub struct RingBuffer<T: Sized + Copy> { /* fields omitted */ }
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 RingBuffer with a defined capacity. Note that capacity != length, similar to Vec.

The total capacity of the buffer

Whether there is no data at all in the buffer.

Whether the buffer is completely full.

The length of the data in the buffer.

How much free space there is left in the container. On empty, remaining == capacity

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.

Attempt to read from the AsyncRead into bufs using vectored IO operations. Read more

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.

Attempt to write bytes from bufs into the object using vectored IO operations. Read more

Formats the value using the given formatter. Read more

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.

Performs the conversion.

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

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

Creates a future which will read from the AsyncRead into bufs using vectored IO operations. Read more

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

Creates a future which will read all the bytes from this AsyncRead. Read more

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

Creates an AsyncRead adapter which will read at most limit bytes from the underlying reader. Read more

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

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

Allow using an [AsyncWrite] as a Sink<Item: AsRef<[u8]>>. Read more

Immutably borrows from an owned value. Read more

Mutably borrows from an owned value. Read more

Performs the conversion.

Performs the conversion.

The type returned in the event of a conversion error.

Performs the conversion.

The type returned in the event of a conversion error.

Performs the conversion.