sim_lib_stream_host/
site.rs1use std::sync::Arc;
4
5use sim_kernel::Result;
6
7use crate::placement::{AudioDeviceCard, AudioSiteKey};
8use crate::{HostBackend, HostOpenStream, HostStreamConfigRequest};
9
10pub trait AudioSite: Send + Sync {
15 fn key(&self) -> &AudioSiteKey;
17
18 fn card(&self) -> &AudioDeviceCard;
20
21 fn open(&self, request: HostStreamConfigRequest) -> Result<HostOpenStream>;
23}
24
25pub struct ModeledAudioSite {
27 card: AudioDeviceCard,
28 backend: Arc<dyn HostBackend>,
29}
30
31impl ModeledAudioSite {
32 pub fn new(card: AudioDeviceCard, backend: Arc<dyn HostBackend>) -> Self {
34 Self { card, backend }
35 }
36}
37
38impl AudioSite for ModeledAudioSite {
39 fn key(&self) -> &AudioSiteKey {
40 &self.card.key
41 }
42
43 fn card(&self) -> &AudioDeviceCard {
44 &self.card
45 }
46
47 fn open(&self, request: HostStreamConfigRequest) -> Result<HostOpenStream> {
48 self.backend.open(request)
49 }
50}