Allow for completely lock-free access to Static values, and closed channels.

This commit is contained in:
CordlessCoder 2025-09-17 01:34:54 +01:00 committed by Callum Leslie
parent bb5950cd76
commit 016fe5302d
6 changed files with 35 additions and 20 deletions

View file

@ -1,6 +1,9 @@
use std::sync::Arc;
#[cfg(feature = "sync-flume")]
use crate::sync::traits::{ChannelError, ChannelReceiver, ChannelSender, ChannelType};
use crate::types;
use arc_swap::ArcSwap;
use flume;
type FlumeSucker<T> =
@ -62,10 +65,11 @@ impl<T> FlumeSuck<T> {
let (request_tx, request_rx) = FlumeChannel::create_request_channel();
let (response_tx, response_rx) = FlumeChannel::create_response_channel::<T>();
let state = std::sync::Arc::new(std::sync::Mutex::new(crate::types::ValueSource::None));
let state = Arc::new(crate::types::ValueSource::None);
let state = ArcSwap::new(state);
let sucker = crate::Sucker::new(request_tx, response_rx);
let sourcer = crate::Sourcer::new(request_rx, response_tx, std::sync::Arc::clone(&state));
let sourcer = crate::Sourcer::new(request_rx, response_tx, state);
(sucker, sourcer)
}