sod::MutService
implementations to interact with bus::Bus
.
BusBroadcaster
broadcasts to a bus::Bus
and blocks until the operation is successful.BusTryBroadcaster
tries to broadcast to a bus::Bus
and is able to be retried via sod::RetryService
when the bus buffer is full.BusReceiver
receives from a bus::BusReader
, blocking until an element is received.BusTryReceiver
tries to receive from a bus::BusReader
and is able to be retried via sod::RetryService
when the bus is empty.`use sod::MutService; use sod_bus::{BusBroadcaster, BusReceiver};
let mut broadcaster = BusBroadcaster::withlen(1024); let mut receiver1 = broadcaster.createreceiver(); let mut receiver2 = broadcaster.create_receiver();
broadcaster.process(1).unwrap(); broadcaster.process(2).unwrap(); broadcaster.process(3).unwrap();
asserteq!(receiver1.process(()).unwrap(), 1); asserteq!(receiver1.process(()).unwrap(), 2); assert_eq!(receiver1.process(()).unwrap(), 3);
asserteq!(receiver2.process(()).unwrap(), 1); asserteq!(receiver2.process(()).unwrap(), 2); assert_eq!(receiver2.process(()).unwrap(), 3);