aboutsummaryrefslogtreecommitdiff
path: root/src/server/interaction/shared.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/server/interaction/shared.rs')
-rw-r--r--src/server/interaction/shared.rs28
1 files changed, 28 insertions, 0 deletions
diff --git a/src/server/interaction/shared.rs b/src/server/interaction/shared.rs
new file mode 100644
index 0000000..fec5980
--- /dev/null
+++ b/src/server/interaction/shared.rs
@@ -0,0 +1,28 @@
+// Copyleft 2021-2021 Whirlsplash
+// SPDX-License-Identifier: GPL-3.0-only
+
+use std::collections::HashMap;
+
+use bytes::BytesMut;
+
+use crate::server::types::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, message: &[u8]) {
+ for peer in self.peers.iter_mut() {
+ peer.1.send(BytesMut::from(message)).unwrap();
+ }
+ }
+}
+impl Default for Shared {
+ fn default() -> Self { Self::new() }
+}