| Crates.io | sod-mpsc |
| lib.rs | sod-mpsc |
| version | 0.4.2 |
| created_at | 2023-04-19 04:26:08.295397+00 |
| updated_at | 2025-01-07 17:22:01.054627+00 |
| description | Service Oriented Design - Multi Producer Single Consumer |
| homepage | |
| repository | https://github.com/thill/sod |
| max_upload_size | |
| id | 843180 |
| size | 8,390 |
sod::Service implementations to interact with std::sync::mpsc queues.
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.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);