Expand description
sod::MutService
implementations to interact with the broadcast bus::Bus
.
Service Impls
BusBroadcaster
broadcasts to abus::Bus
and blocks until the operation is successful.BusTryBroadcaster
tries to broadcast to abus::Bus
and is able to be retried viasod::RetryService
when the bus buffer is full.BusReceiver
receives from abus::BusReader
, blocking until an element is received.BusTryReceiver
tries to receive from abus::BusReader
and is able to be retried viasod::RetryService
when the bus is empty.
Example
use sod::MutService;
use sod_bus::{BusBroadcaster, BusReceiver};
let mut broadcaster = BusBroadcaster::with_len(1024);
let mut receiver1 = broadcaster.create_receiver();
let mut receiver2 = broadcaster.create_receiver();
broadcaster.process(1).unwrap();
broadcaster.process(2).unwrap();
broadcaster.process(3).unwrap();
assert_eq!(receiver1.process(()).unwrap(), 1);
assert_eq!(receiver1.process(()).unwrap(), 2);
assert_eq!(receiver1.process(()).unwrap(), 3);
assert_eq!(receiver2.process(()).unwrap(), 1);
assert_eq!(receiver2.process(()).unwrap(), 2);
assert_eq!(receiver2.process(()).unwrap(), 3);
Structs
- A blocking
sod::MutService
that broadcasts to an underlyingbus::Bus
. - A blocking
sod::MutService
that receives from an underlyingbus::BusReader
- A non-blocking
sod::MutService
that isRetryable
and attempts to broadcast to an underlyingbus::Bus
. - A non-blocking
sod::MutService
that issod::Retryable
and receives from an underlyingbus::BusReader