diff --git a/engine/src/audio_engine/jack_ab.rs b/engine/src/audio_engine/jack_ab.rs index 6e6d1ab..d7c2670 100644 --- a/engine/src/audio_engine/jack_ab.rs +++ b/engine/src/audio_engine/jack_ab.rs @@ -1,16 +1,21 @@ use crate::audio_engine::AudioBackend; pub(crate) struct JackAudioBackend { - pub(crate) name: String, + pub(crate) feature_jack: bool, pub(crate) running: bool, } impl JackAudioBackend { - pub(crate) fn new(name: String, running: bool) -> Self { - Self { name, running } + pub(crate) fn new() -> Self { + + let feature_jack = cfg!(feature = "jack"); + // TODO: It should be retrieved from the system + let running = true; + Self { feature_jack, running } } } +#[cfg(feature = "jack")] impl AudioBackend for JackAudioBackend { fn start_client(&self) { todo!() @@ -24,3 +29,18 @@ impl AudioBackend for JackAudioBackend { todo!() } } + +#[cfg(not(feature = "jack"))] +impl AudioBackend for JackAudioBackend { + fn start_client(&self) { + unimplemented!() + } + + fn init_client(&self) { + unimplemented!() + } + + fn discover(&self) { + unimplemented!() + } +} diff --git a/engine/src/audio_engine/mod.rs b/engine/src/audio_engine/mod.rs index 10df893..a007167 100644 --- a/engine/src/audio_engine/mod.rs +++ b/engine/src/audio_engine/mod.rs @@ -1,4 +1,3 @@ -#[cfg(feature = "jack")] pub(crate) mod jack_ab; pub(crate) trait AudioBackend { diff --git a/engine/src/control_pane/grpc/mod.rs b/engine/src/control_pane/grpc/mod.rs index 8f94fed..216509c 100644 --- a/engine/src/control_pane/grpc/mod.rs +++ b/engine/src/control_pane/grpc/mod.rs @@ -7,9 +7,7 @@ use tonic::{Response, transport::Server}; use tonic_reflection::server; -use crate::control_pane::ControlPane; -#[cfg(feature = "jack") ] -use crate::audio_engine::jack_ab::JackAudioBackend; +use crate::{audio_engine::jack_ab::JackAudioBackend, control_pane::ControlPane}; pub(crate) struct Grpc { pub(crate) port: i32, @@ -65,11 +63,11 @@ impl AudioBackend for TermixAudioBackend { ) -> Result, tonic::Status> { info!("discovering available backends"); let mut response = BackendList::default(); - if cfg!(feature = "jack") { - let jack = JackAudioBackend{ name: "jack".to_string(), running: todo!() }; - response.backends.push(Backend { - name: "jack".to_string(), - }); + let jack = JackAudioBackend::new(); + if jack.feature_jack { + response.backends.push(Backend { + name: "jack".to_string(), + }); } Ok(Response::new(response)) }