use crate::net::OutgoingDatagram;
use super::Registry;
impl Registry {
pub fn drain_transmits<F: FnMut(OutgoingDatagram)>(&mut self, mut sink: F) {
for client in self.clients.iter_mut() {
for t in client.drain_pending_out() {
sink(t);
}
}
}
pub fn reap_dead(&mut self) {
#[cfg(feature = "active-speaker")]
let detector = &mut self.detector;
let metrics = &self.metrics;
self.clients.retain(|c| {
let alive = c.is_alive();
if !alive {
#[cfg(feature = "active-speaker")]
{
if !c.is_relay() {
detector.remove_peer(&*c.id);
}
}
metrics.inc_client_disconnect();
metrics.dec_active_participants();
metrics.reap_dead_peer(*c.id);
}
alive
});
}
}