#[cfg(feature = "active-speaker")]
use std::time::Instant;
use super::Registry;
use crate::fanout::fanout;
use crate::ids::SfuRid;
use crate::propagate::Propagated;
impl Registry {
#[doc(hidden)]
pub fn fanout_for_tests(&mut self, p: &Propagated) {
fanout(p, &mut self.clients);
}
#[doc(hidden)]
pub fn delivered_media_count(&self, idx: usize) -> u64 {
self.clients[idx].delivered_media_count()
}
#[doc(hidden)]
#[cfg(feature = "active-speaker")]
pub fn delivered_active_speaker_count(&self, idx: usize) -> u64 {
self.clients[idx].delivered_active_speaker_count()
}
#[doc(hidden)]
pub fn set_desired_layer_for_tests(&mut self, idx: usize, rid: SfuRid) {
self.clients[idx].set_desired_layer(rid);
}
#[doc(hidden)]
#[cfg(feature = "active-speaker")]
pub fn inject_audio_level_for_tests(&mut self, peer_id: u64, level: u8, now: Instant) {
self.detector.record_level(peer_id, level, now);
}
#[doc(hidden)]
#[cfg(feature = "active-speaker")]
pub fn force_active_speaker_tick_for_tests(&mut self, now: Instant) -> Option<u64> {
let changed = self.detector.tick(now);
if let Some(peer_id) = changed {
self.metrics.inc_dominant_speaker_changes();
self.to_propagate
.push_back(Propagated::ActiveSpeakerChanged { peer_id });
}
self.fanout_pending();
changed
}
#[doc(hidden)]
#[cfg(feature = "active-speaker")]
pub fn current_active_speaker(&self) -> Option<u64> {
self.detector.current_dominant()
}
#[doc(hidden)]
pub fn disconnect_client_for_tests(&mut self, id: crate::propagate::ClientId) {
if let Some(client) = self.clients.iter_mut().find(|c| c.id == id) {
client.disconnect_for_tests();
}
}
#[doc(hidden)]
pub fn reap_dead_for_tests(&mut self) {
self.reap_dead();
}
}