use std::sync::atomic::{AtomicBool, AtomicUsize, Ordering};
use crate::SharedDetails;
use delegate::delegate;
use std::fmt::Debug;
pub struct BoundedSharedDetails<Q, N = ()>
{
shared_details: SharedDetails<Q, N>,
senders_notifier: N,
}
impl<Q, N> BoundedSharedDetails<Q, N>
{
pub fn new(queue: Q, receivers_notifier: N, senders_notifier: N) -> Self
{
Self
{
shared_details: SharedDetails::new(queue, receivers_notifier),
senders_notifier,
}
}
delegate!
{
to self.shared_details
{
pub fn queue_ref(&self) -> &Q;
pub fn receivers_notifier_ref(&self) -> &N;
}
}
pub fn senders_notifier_ref(&self) -> &N
{
&self.senders_notifier
}
}
impl<Q, N> Debug for BoundedSharedDetails<Q, N>
where Q: Debug,
N: Debug
{
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
f.debug_struct("BoundedSharedDetails").field("shared_details", &self.shared_details).field("senders_notifier", &self.senders_notifier).finish()
}
}