[−][src]Struct tokio_bus::Bus
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]
&mut self,
item: Self::SinkItem
) -> StartSend<Self::SinkItem, Self::SinkError>
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]
fn wait(self) -> Wait<Self>
[src]
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]
F: FnMut(U) -> Fut,
Fut: IntoFuture<Item = Self::SinkItem>,
<Fut as IntoFuture>::Error: From<Self::SinkError>,
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]
F: FnMut(U) -> St,
St: Stream<Item = Self::SinkItem, Error = Self::SinkError>,
fn sink_map_err<F, E>(self, f: F) -> SinkMapErr<Self, F> where
F: FnOnce(Self::SinkError) -> E,
[src]
F: FnOnce(Self::SinkError) -> E,
fn sink_from_err<E>(self) -> SinkFromErr<Self, E> where
E: From<Self::SinkError>,
[src]
E: From<Self::SinkError>,
fn buffer(self, amt: usize) -> Buffer<Self>
[src]
fn fanout<S>(self, other: S) -> Fanout<Self, S> where
S: Sink<SinkItem = Self::SinkItem, SinkError = Self::SinkError>,
Self::SinkItem: Clone,
[src]
S: Sink<SinkItem = Self::SinkItem, SinkError = Self::SinkError>,
Self::SinkItem: Clone,
fn flush(self) -> Flush<Self>
[src]
fn send(self, item: Self::SinkItem) -> Send<Self>
[src]
fn send_all<S>(self, stream: S) -> SendAll<Self, S> where
S: Stream<Item = Self::SinkItem>,
Self::SinkError: From<<S as Stream>::Error>,
[src]
S: Stream<Item = Self::SinkItem>,
Self::SinkError: From<<S as Stream>::Error>,
Auto Trait Implementations
impl<T> Sync for Bus<T> where
T: Send,
T: Send,
impl<T> Send for Bus<T> where
T: Send,
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]
U: From<T>,
impl<T> From<T> for T
[src]
impl<T, U> TryFrom<U> for T where
U: Into<T>,
[src]
U: Into<T>,
type Error = Infallible
The type returned in the event of a conversion error.
fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>
[src]
impl<T, U> TryInto<U> for T where
U: TryFrom<T>,
[src]
U: TryFrom<T>,
type Error = <U as TryFrom<T>>::Error
The type returned in the event of a conversion error.
fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>
[src]
impl<T> BorrowMut<T> for T where
T: ?Sized,
[src]
T: ?Sized,
fn borrow_mut(&mut self) -> &mut T
[src]
impl<T> Borrow<T> for T where
T: ?Sized,
[src]
T: ?Sized,
impl<T> Any for T where
T: 'static + ?Sized,
[src]
T: 'static + ?Sized,