use std::collections::HashSet;
use std::sync::Arc;
use async_mutex::Mutex;
use fluvio_controlplane::{LrsRequest};
pub type SharedSinkMessageChannel = Arc<ScSinkMessageChannel>;
pub struct ScSinkMessageChannel(Mutex<HashSet<LrsRequest>>);
impl ScSinkMessageChannel {
pub fn shared() -> Arc<Self> {
Arc::new(Self(Mutex::new(HashSet::new())))
}
pub async fn send(&self, request: LrsRequest) {
let mut lock = self.0.lock().await;
lock.insert(request);
}
pub async fn remove_all(&self) -> Vec<LrsRequest> {
let mut lock = self.0.lock().await;
lock.drain().collect()
}
}