2025-12-20 22:39:56 -07:00
|
|
|
use unshell_lib::{Announcement, Result};
|
|
|
|
|
|
2025-12-21 00:35:28 -07:00
|
|
|
// use crate::network::Stream;
|
2025-12-20 22:39:56 -07:00
|
|
|
|
|
|
|
|
use crate::Manager;
|
2025-11-25 15:22:14 -07:00
|
|
|
|
|
|
|
|
impl Manager {
|
2025-11-25 17:31:09 -07:00
|
|
|
pub fn add_connection(&mut self, connection: Box<dyn Stream<Announcement>>) {
|
2025-11-25 15:22:14 -07:00
|
|
|
self.connections.push(connection);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
pub fn prune_connections(&mut self) {
|
|
|
|
|
self.connections.retain(|c| c.is_alive());
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
pub fn recv_connection_announcements(&mut self) {
|
|
|
|
|
// Collect all incoming announcements
|
|
|
|
|
let announcements = self
|
|
|
|
|
.connections
|
2025-11-25 17:31:09 -07:00
|
|
|
.iter_mut()
|
|
|
|
|
.map(|c| c.try_read())
|
2025-11-25 15:22:14 -07:00
|
|
|
.flat_map(|array| array)
|
|
|
|
|
.collect::<Vec<Announcement>>();
|
|
|
|
|
|
|
|
|
|
for announcement in announcements {
|
|
|
|
|
self.recv_announcement(&announcement)
|
|
|
|
|
}
|
|
|
|
|
}
|
2025-11-25 17:31:09 -07:00
|
|
|
|
2025-12-21 00:35:28 -07:00
|
|
|
// pub fn broadcast(&mut self, announcement: Announcement) -> Result<()> {
|
|
|
|
|
// for connection in &mut self.connections {
|
|
|
|
|
// connection.write(announcement.clone())?;
|
|
|
|
|
// }
|
|
|
|
|
// Ok(())
|
|
|
|
|
// }
|
2025-11-25 15:22:14 -07:00
|
|
|
}
|