aboutsummaryrefslogtreecommitdiff
path: root/src/server/shared.rs
blob: d7ff6c9224b291199c1d9dea1e64878f80b70d52 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
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());
	// 		}
	// 	}
	// }
}