use tokio::sync::{broadcast::Sender, mpsc::Receiver}; use werewolves_proto::{ error::GameError, message::host::{HostMessage, ServerToHostMessage}, }; pub struct HostComms { send: Sender, recv: Receiver, } impl HostComms { pub const fn new( host_send: Sender, host_recv: Receiver, ) -> Self { Self { send: host_send, recv: host_recv, } } #[cfg(debug_assertions)] pub async fn recv(&mut self) -> Option { self.recv.recv().await } #[cfg(not(debug_assertions))] pub async fn recv(&mut self) -> Option { self.recv.recv().await } pub fn send(&mut self, message: ServerToHostMessage) -> Result<(), GameError> { self.send .send(message) .map_err(|err| GameError::GenericError(err.to_string()))?; Ok(()) } }