use common::StatusMessage; use tokio::sync::{mpsc::Sender, Mutex}; pub struct ClientManager { clients: Mutex>>, } impl ClientManager { pub fn new() -> Self { Self { clients: Mutex::new(Vec::new()), } } pub async fn add_client(&self, client: Sender) { let mut clients = self.clients.lock().await; clients.push(client); } pub async fn broadcast(&self, message: &StatusMessage) { let mut clients = self.clients.lock().await; clients.retain(|client| { client.try_send(message.clone()).is_ok() }); } }