[][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

fn close(&mut self) -> Result<Async<()>, Self::SinkError>
[src]

A method to indicate that no more values will ever be pushed into this sink. Read more

fn wait(self) -> Wait<Self>
[src]

Creates a new object which will produce a synchronous sink. Read more

fn with<U, F, Fut>(self, f: F) -> With<Self, U, F, Fut> where
    F: FnMut(U) -> Fut,
    Fut: IntoFuture<Item = Self::SinkItem>,
    <Fut as IntoFuture>::Error: From<Self::SinkError>, 
[src]

Composes a function in front of the sink. Read more

fn with_flat_map<U, F, St>(self, f: F) -> WithFlatMap<Self, U, F, St> where
    F: FnMut(U) -> St,
    St: Stream<Item = Self::SinkItem, Error = Self::SinkError>, 
[src]

Composes a function in front of the sink. Read more

fn sink_map_err<F, E>(self, f: F) -> SinkMapErr<Self, F> where
    F: FnOnce(Self::SinkError) -> E, 
[src]

Transforms the error returned by the sink.

fn sink_from_err<E>(self) -> SinkFromErr<Self, E> where
    E: From<Self::SinkError>, 
[src]

Map this sink's error to any error implementing From for this sink's Error, returning a new sink. Read more

fn buffer(self, amt: usize) -> Buffer<Self>
[src]

Adds a fixed-size buffer to the current sink. Read more

fn fanout<S>(self, other: S) -> Fanout<Self, S> where
    S: Sink<SinkItem = Self::SinkItem, SinkError = Self::SinkError>,
    Self::SinkItem: Clone
[src]

Fanout items to multiple sinks. Read more

fn flush(self) -> Flush<Self>
[src]

A future that completes when the sink has finished processing all pending requests. Read more

fn send(self, item: Self::SinkItem) -> Send<Self>
[src]

A future that completes after the given item has been fully processed into the sink, including flushing. Read more

fn send_all<S>(self, stream: S) -> SendAll<Self, S> where
    S: Stream<Item = Self::SinkItem>,
    Self::SinkError: From<<S as Stream>::Error>, 
[src]

A future that completes after the given stream has been fully processed into the sink, including flushing. Read more

Auto Trait Implementations

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

impl<T> !Sync for Bus<T>

Blanket Implementations

impl<T> From for T
[src]

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

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

type Error = !

🔬 This is a nightly-only experimental API. (try_from)

The type returned in the event of a conversion error.

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

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

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

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

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

🔬 This is a nightly-only experimental API. (try_from)

The type returned in the event of a conversion error.

impl<T> Erased for T