Make streams system

This commit is contained in:
Michael Mikovsky
2025-11-25 17:31:09 -07:00
parent 6863e08a0a
commit b43f2f5181
10 changed files with 395 additions and 202 deletions
+11 -8
View File
@@ -1,11 +1,7 @@
use crate::{
Announcement,
module::Manager,
network::{Connection, Stream},
};
use crate::{Announcement, ModuleError, module::Manager, network::Stream};
impl Manager {
pub fn add_connection(&mut self, connection: Connection) {
pub fn add_connection(&mut self, connection: Box<dyn Stream<Announcement>>) {
self.connections.push(connection);
}
@@ -17,8 +13,8 @@ impl Manager {
// Collect all incoming announcements
let announcements = self
.connections
.iter()
.map(|c| c.read())
.iter_mut()
.map(|c| c.try_read())
.flat_map(|array| array)
.collect::<Vec<Announcement>>();
@@ -26,4 +22,11 @@ impl Manager {
self.recv_announcement(&announcement)
}
}
pub fn broadcast(&mut self, announcement: Announcement) -> Result<(), ModuleError> {
for connection in &mut self.connections {
connection.write(announcement.clone())?;
}
Ok(())
}
}