9 releases

new 0.4.2 Jan 7, 2025
0.3.4 Jun 26, 2024
0.3.1 Oct 15, 2023
0.2.3 Jul 25, 2023
0.1.2 Apr 19, 2023

#1645 in Rust patterns

MIT/Apache

62KB
1.5K SLoC

sod-mpsc

sod::Service implementations to interact with std::sync::mpsc queues.

Service Impls

  • MpscSender sends to a std::sync::mpsc::channel.
  • MpscSyncSender sends to a std::sync::mpsc::sync_channel and blocks if the channel is full.
  • MpscSyncTrySender tries to send to a std::sync::mpsc::sync_channel and is able to be retried via sod::RetryService when the channel is full.
  • MpscReceiver receives from a std::sync::mpsc::channel or std::sync::mpsc::sync_channel, blocking until an element is received.
  • MpscTryReceiver tries to receive from a std::sync::mpsc::channel or std::sync::mpsc::sync_channel, and is able to be retried via sod::Retryable when the channel is empty.

Example

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);

Dependencies

~210–650KB
~15K SLoC