sod-bus

Crates.iosod-bus
lib.rssod-bus
version0.3.4
sourcesrc
created_at2023-04-20 17:33:40.68062
updated_at2024-06-26 13:50:34.438865
descriptionService Oriented Design - Single Producer Multi Consumer
homepage
repositoryhttps://github.com/thill/sod
max_upload_size
id844651
size9,411
Eric Thill (thill)

documentation

README

sod-bus

sod::MutService implementations to interact with bus::Bus.

Service Impls

  • 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.

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);
Commit count: 16

cargo fmt