sod::Service
implementations to interact with std::sync::mpsc
queues.
MpscSender
sends to astd::sync::mpsc::channel
.MpscSyncSender
sends to astd::sync::mpsc::sync_channel
and blocks if the channel is full.MpscSyncTrySender
tries to send to astd::sync::mpsc::sync_channel
and is able to be retried viasod::RetryService
when the channel is full.MpscReceiver
receives from astd::sync::mpsc::channel
orstd::sync::mpsc::sync_channel
, blocking until an element is received.MpscTryReceiver
tries to receive from astd::sync::mpsc::channel
orstd::sync::mpsc::sync_channel
, and is able to be retried viasod::Retryable
when the channel is empty.
use sod::Service;
use sod_mpsc::{MpscSender, MpscReceiver};
use std::sync::mpsc;
let (tx, rx) = mpsc::channel();
let pusher = MpscSender::new(tx);
let poller = MpscReceiver::new(rx);
pusher.process(1).unwrap();
pusher.process(2).unwrap();
assert_eq!(poller.process(()).unwrap(), 1);
assert_eq!(poller.process(()).unwrap(), 2);