watch

Function watch 

Source
pub fn watch(
    sender_lease: MemLease,
    receiver_lease: MemLease,
    base_offset: u64,
    initial: &[u8],
) -> Result<(WatchSender, WatchReceiver)>
Expand description

Create a watch channel pair (WatchSender, WatchReceiver) backed by leased memory.

Initializes version to 0 and stores initial as the current value. The sender can update the value with WatchSender::send; receivers detect changes via WatchReceiver::changed and read with WatchReceiver::recv.

sender_lease and receiver_lease must point to the same underlying arena (or the same shared memory region) so that writes from the sender are visible to the receiver.

ยงExample

use grafos_sync::watch;
use grafos_std::mem::MemBuilder;

let sl = MemBuilder::new().acquire().unwrap();
let rl = MemBuilder::new().acquire().unwrap();
let (sender, mut receiver) = watch(sl, rl, 0, b"hello").unwrap();

let val = receiver.recv().unwrap();
assert_eq!(&val, b"hello");

sender.send(b"world").unwrap();
assert!(receiver.changed().unwrap());
let val = receiver.recv().unwrap();
assert_eq!(&val, b"world");