[][src]Struct tokio_bus::Bus

pub struct Bus<T: Clone + Sync> { /* fields omitted */ }

A bus which buffers messages for all of its readers to eventually read. Allows the dynamic addition and removal of readers.

Methods

impl<T: Clone + Sync> Bus<T>[src]

pub fn new(len: usize) -> Self[src]

Create a new Bus that will buffer at most len messages.

Note that until all readers have read a given message (or the reader has been dropped) it is kept in the buffer and counts against the buffer size.

pub fn add_rx(&mut self) -> BusReader<T>[src]

Create a new BusReader instance which can be used to read messages from the Bus that were sent after the creation of this BusReader.

pub fn try_broadcast(&mut self, val: T) -> Result<(), T>[src]

Attempt to broadcast a message synchronously, failing and returning the item set to be broadcast if the broadcast cannot be completed without blocking.

It can be inconvient in some cases to have to deal with the Sink trait as it necessarily needs to take and pass back ownership. The Bus does not need any blocking I/O except when the buffer is full, which in some systems is an easy situation to avoid.

This method will allow for synchronous sending while still allowing asynchronous readers to be woken up to read.

Trait Implementations

impl<T: Clone + Sync> Drop for Bus<T>[src]

fn drop(&mut self)[src]

Make readers aware of the Bus dropping in order to let them terminate their Stream.

impl<T: Clone + Sync> Sink for Bus<T>[src]

type SinkItem = T

The type of value that the sink accepts.

type SinkError = ()

The type of value produced by the sink when an error occurs.

fn start_send(
    &mut self,
    item: Self::SinkItem
) -> StartSend<Self::SinkItem, Self::SinkError>
[src]

Either successfully buffer the item on the internal Bus' buffer, or indicate the Sink is full.

fn poll_complete(&mut self) -> Poll<(), Self::SinkError>[src]

This sink uses the inner Bus' buffer and therefore a success with start_send has already completed the send

Auto Trait Implementations

impl<T> Sync for Bus<T> where
    T: Send

impl<T> Send for Bus<T> where
    T: Send

impl<T> Unpin for Bus<T>

impl<T> !UnwindSafe for Bus<T>

impl<T> !RefUnwindSafe for Bus<T>

Blanket Implementations

impl<T, U> Into<U> for T where
    U: From<T>, 
[src]

impl<T> From<T> for T[src]

impl<T, U> TryFrom<U> for T where
    U: Into<T>, 
[src]

type Error = Infallible

The type returned in the event of a conversion error.

impl<T, U> TryInto<U> for T where
    U: TryFrom<T>, 
[src]

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.

impl<T> BorrowMut<T> for T where
    T: ?Sized
[src]

impl<T> Borrow<T> for T where
    T: ?Sized
[src]

impl<T> Any for T where
    T: 'static + ?Sized
[src]

impl<T> Erased for T