Add grpc reflections
Some checks failed
ci/woodpecker/push/pre_commit_test Pipeline was successful
ci/woodpecker/push/code_tests Pipeline failed

Signed-off-by: Nikolai Rodionov <allanger@badhouseplants.net>
This commit is contained in:
2025-11-30 19:06:52 +01:00
parent 61c5799ffc
commit 85aac6c8aa
5 changed files with 27 additions and 4 deletions

15
Cargo.lock generated
View File

@@ -477,6 +477,7 @@ dependencies = [
"tokio", "tokio",
"tonic", "tonic",
"tonic-prost", "tonic-prost",
"tonic-reflection",
] ]
[[package]] [[package]]
@@ -1696,6 +1697,20 @@ dependencies = [
"tonic-build", "tonic-build",
] ]
[[package]]
name = "tonic-reflection"
version = "0.14.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "34da53e8387581d66db16ff01f98a70b426b091fdf76856e289d5c1bd386ed7b"
dependencies = [
"prost",
"prost-types",
"tokio",
"tokio-stream",
"tonic",
"tonic-prost",
]
[[package]] [[package]]
name = "tower" name = "tower"
version = "0.5.2" version = "0.5.2"

View File

@@ -14,6 +14,7 @@ prost = "0.14.1"
tokio = { version = "1.48.0", features = ["rt-multi-thread"] } tokio = { version = "1.48.0", features = ["rt-multi-thread"] }
tonic = "0.14.2" tonic = "0.14.2"
tonic-prost = "0.14.2" tonic-prost = "0.14.2"
tonic-reflection = "0.14.2"
[features] [features]
jack = ["dep:jack"] jack = ["dep:jack"]

View File

@@ -1,8 +1,9 @@
mod audio_engine; mod audio_engine;
use clap::Parser; use clap::Parser;
use lib::termix::audio_backend::audio_backend_server::{AudioBackend, AudioBackendServer}; use lib::termix::audio_backend::{FILE_DESCRIPTOR_SET, audio_backend_server::{AudioBackend, AudioBackendServer}};
use tonic::{transport::Server, Request, Response, Status}; use tonic::{transport::Server, Request, Response, Status};
use log::{debug, error, log_enabled, info, Level}; use log::{debug, error, log_enabled, info, Level};
use tonic_reflection::server::v1::{ReflectionService, ServerReflection};
/// Simple program to greet a person /// Simple program to greet a person
#[derive(Parser, Debug)] #[derive(Parser, Debug)]
#[command(version, about, long_about = None)] #[command(version, about, long_about = None)]
@@ -32,12 +33,13 @@ async fn main() -> Result<(), Box<dyn std::error::Error>> {
env_logger::init(); env_logger::init();
let args = Args::parse(); let args = Args::parse();
info!("starting the grpc server on port {}", args.grpc_port); 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()?; let addr = "[::1]:50051".parse()?;
let greeter = TermixAudioBackend::default(); let greeter = TermixAudioBackend::default();
Server::builder() Server::builder()
.add_service(AudioBackendServer::new(greeter)) .add_service(AudioBackendServer::new(greeter))
.add_service(reflections)
.serve(addr) .serve(addr)
.await?; .await?;

View File

@@ -1,4 +1,4 @@
use std::io::Result; use std::{env, io::Result, path::PathBuf};
fn main() -> Result<()> { fn main() -> Result<()> {
//let proto_dir = "proto"; //let proto_dir = "proto";
@@ -6,7 +6,11 @@ fn main() -> Result<()> {
//for path in paths { //for path in paths {
// prost_build::compile_protos(&[path.unwrap().path()], &[proto_dir])?; // prost_build::compile_protos(&[path.unwrap().path()], &[proto_dir])?;
//} //}
tonic_prost_build::compile_protos("proto/audio_backend.proto") //
let out_dir = PathBuf::from(env::var("OUT_DIR").unwrap());
tonic_prost_build::configure()
.file_descriptor_set_path(out_dir.join("audio_backend_descriptor.bin"))
.compile_protos(&["proto/audio_backend.proto"], &["proto"])
.unwrap_or_else(|e| panic!("Failed to compile protos {:?}", e)); .unwrap_or_else(|e| panic!("Failed to compile protos {:?}", e));
Ok(()) Ok(())

View File

@@ -1,5 +1,6 @@
pub mod termix { pub mod termix {
pub mod audio_backend { pub mod audio_backend {
pub const FILE_DESCRIPTOR_SET: &[u8] = tonic::include_file_descriptor_set!("audio_backend_descriptor");
tonic::include_proto!("termix.audio_backend"); tonic::include_proto!("termix.audio_backend");
} }
} }