From 2385d3901fc22a7b643a6231f774aa4c6c9ca32f Mon Sep 17 00:00:00 2001 From: Nikolai Rodionov Date: Sun, 30 Nov 2025 22:41:48 +0100 Subject: [PATCH] Adding backend discovery Signed-off-by: Nikolai Rodionov --- engine/src/main.rs | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/engine/src/main.rs b/engine/src/main.rs index b123743..939ee01 100644 --- a/engine/src/main.rs +++ b/engine/src/main.rs @@ -1,7 +1,7 @@ mod audio_engine; use clap::Parser; -use lib::termix::audio_backend::{FILE_DESCRIPTOR_SET, audio_backend_server::{AudioBackend, AudioBackendServer}}; -use tonic::{transport::Server, Request, Response, Status}; +use lib::termix::audio_backend::{Backend, BackendList, FILE_DESCRIPTOR_SET, audio_backend_server::{AudioBackend, AudioBackendServer}}; +use tonic::{Request, Response, Result, Status, transport::Server}; use log::{debug, error, log_enabled, info, Level}; use tonic_reflection::server::v1::{ReflectionService, ServerReflection}; /// Simple program to greet a person @@ -17,7 +17,7 @@ pub struct TermixAudioBackend {} #[tonic::async_trait] impl AudioBackend for TermixAudioBackend { - async fn start_client(&self,request:tonic::Request<()>,) -> std::result::Result,tonic::Status> { + async fn start_client(&self,requesa:tonic::Request<()>,) -> std::result::Result,tonic::Status> { info!("starting the audio backend client"); todo!() } @@ -26,12 +26,23 @@ impl AudioBackend for TermixAudioBackend { info!("initializing the connection to the audio backend"); todo!() } + + async fn get_available_backends(&self, request:tonic::Request<()>) -> Result, tonic::Status> { + info!("discovering available backends"); + let mut response = BackendList::default(); + if cfg!(feature = "jack") { + response.backends.push(Backend{ name: "jack".to_string() }); + } + Ok(Response::new(response)) + } } + #[tokio::main] async fn main() -> Result<(), Box> { env_logger::init(); let args = Args::parse(); + // start_grpc_server() info!("starting the grpc server on port {}", args.grpc_port); let reflections = tonic_reflection::server::Builder::configure().register_encoded_file_descriptor_set(FILE_DESCRIPTOR_SET).build_v1().unwrap(); let addr = "[::1]:50051".parse()?;