diff options
Diffstat (limited to 'src/server/shared.rs')
| -rw-r--r-- | src/server/shared.rs | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/src/server/shared.rs b/src/server/shared.rs new file mode 100644 index 0000000..d7ff6c9 --- /dev/null +++ b/src/server/shared.rs @@ -0,0 +1,35 @@ +use std::collections::HashMap; +// use std::net::SocketAddr; +use bytes::BytesMut; +use crate::server::Tx; + +pub struct Shared { + pub peers: HashMap<String, Tx>, +} +impl Shared { + pub fn new() -> Self { + Shared { + peers: HashMap::new(), + } + } + + pub async fn broadcast(&mut self, /* sender: &str, */ message: &[u8]) { + // debug!("peer sent message: {:?}", message); + // debug!("peer count: {}", self.peers.len()); + // debug!("peers: {:?}", self.peers); + for peer in self.peers.iter_mut() { + // debug!("peer: {:?}", peer); + // TODO: + // thread 'tokio-runtime-worker' panicked at 'called `Option::unwrap()` on a `None` value' + peer.1.send(BytesMut::from(message)).unwrap(); + } + } + + // pub async fn broadcast(&mut self, sender: SocketAddr, message: &str) { + // for peer in self.peers.iter_mut() { + // if *peer.0 != sender { + // let _ = peer.1.send(message.into()); + // } + // } + // } +} |