use std::sync::atomic::Ordering;
use super::Client;
use crate::ids::SfuRid;
use crate::net::IncomingDatagram;
impl Client {
#[must_use]
pub fn desired_layer(&self) -> SfuRid {
self.desired_layer
}
pub fn set_desired_layer(&mut self, rid: SfuRid) {
self.desired_layer = rid;
self.chosen_rid = None;
}
#[must_use]
pub fn active_rids(&self) -> Vec<SfuRid> {
self.active_rids.iter().copied().collect()
}
#[must_use]
pub fn delivered_media_count(&self) -> u64 {
self.delivered_media.load(Ordering::Relaxed)
}
#[cfg(any(test, feature = "test-utils"))]
#[must_use]
pub fn delivered_active_speaker_count(&self) -> u64 {
self.delivered_active_speaker.load(Ordering::Relaxed)
}
#[must_use]
pub fn is_alive(&self) -> bool {
self.rtc.is_alive()
}
#[must_use]
pub fn accepts(&self, datagram: &IncomingDatagram) -> bool {
let Ok(contents) = (&datagram.contents[..]).try_into() else {
return false;
};
let input = str0m::Input::Receive(
datagram.received_at,
str0m::net::Receive {
proto: datagram.proto.to_str0m(),
source: datagram.source,
destination: datagram.destination,
contents,
},
);
self.rtc.accepts(&input)
}
}