[refactor](trx-frontend-*): update frontend implementations for context parameter

Update all three built-in frontends to accept Arc<FrontendRuntimeContext>
parameter in their spawn_frontend implementations:

- trx-frontend-http: passes context to serve function
- trx-frontend-http-json: passes context to serve function
- trx-frontend-rigctl: accepts context (minimal impact, no globals used)

Frontends are now ready to use context for audio channels, decode
channels, and auth tokens instead of accessing globals directly.

This completes the trait signature change for all frontends.

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
Signed-off-by: Stanislaw Grams <stanislawgrams@gmail.com>
This commit is contained in:
2026-02-12 20:53:42 +01:00
parent 1ebdbe91a9
commit 673dc372e7
3 changed files with 12 additions and 4 deletions
@@ -73,16 +73,21 @@ impl FrontendSpawner for HttpJsonFrontend {
rig_tx: mpsc::Sender<RigRequest>, rig_tx: mpsc::Sender<RigRequest>,
_callsign: Option<String>, _callsign: Option<String>,
listen_addr: SocketAddr, listen_addr: SocketAddr,
context: std::sync::Arc<trx_frontend::FrontendRuntimeContext>,
) -> JoinHandle<()> { ) -> JoinHandle<()> {
tokio::spawn(async move { tokio::spawn(async move {
if let Err(e) = serve(listen_addr, rig_tx).await { if let Err(e) = serve(listen_addr, rig_tx, context).await {
error!("json tcp server error: {:?}", e); error!("json tcp server error: {:?}", e);
} }
}) })
} }
} }
async fn serve(listen_addr: SocketAddr, rig_tx: mpsc::Sender<RigRequest>) -> std::io::Result<()> { async fn serve(
listen_addr: SocketAddr,
rig_tx: mpsc::Sender<RigRequest>,
_context: std::sync::Arc<trx_frontend::FrontendRuntimeContext>,
) -> std::io::Result<()> {
let listener = TcpListener::bind(listen_addr).await?; let listener = TcpListener::bind(listen_addr).await?;
info!("json tcp frontend listening on {}", listen_addr); info!("json tcp frontend listening on {}", listen_addr);
@@ -22,7 +22,7 @@ use tracing::{error, info};
use trx_core::RigRequest; use trx_core::RigRequest;
use trx_core::RigState; use trx_core::RigState;
use trx_frontend::FrontendSpawner; use trx_frontend::{FrontendSpawner, FrontendRuntimeContext};
/// HTTP frontend implementation. /// HTTP frontend implementation.
pub struct HttpFrontend; pub struct HttpFrontend;
@@ -33,9 +33,10 @@ impl FrontendSpawner for HttpFrontend {
rig_tx: mpsc::Sender<RigRequest>, rig_tx: mpsc::Sender<RigRequest>,
callsign: Option<String>, callsign: Option<String>,
listen_addr: SocketAddr, listen_addr: SocketAddr,
context: Arc<FrontendRuntimeContext>,
) -> JoinHandle<()> { ) -> JoinHandle<()> {
tokio::spawn(async move { tokio::spawn(async move {
if let Err(e) = serve(listen_addr, state_rx, rig_tx, callsign).await { if let Err(e) = serve(listen_addr, state_rx, rig_tx, callsign, context).await {
error!("HTTP status server error: {:?}", e); error!("HTTP status server error: {:?}", e);
} }
}) })
@@ -47,6 +48,7 @@ async fn serve(
state_rx: watch::Receiver<RigState>, state_rx: watch::Receiver<RigState>,
rig_tx: mpsc::Sender<RigRequest>, rig_tx: mpsc::Sender<RigRequest>,
callsign: Option<String>, callsign: Option<String>,
_context: Arc<FrontendRuntimeContext>,
) -> Result<(), actix_web::Error> { ) -> Result<(), actix_web::Error> {
let server = build_server(addr, state_rx, rig_tx, callsign)?; let server = build_server(addr, state_rx, rig_tx, callsign)?;
let handle = server.handle(); let handle = server.handle();
@@ -30,6 +30,7 @@ impl FrontendSpawner for RigctlFrontend {
rig_tx: mpsc::Sender<RigRequest>, rig_tx: mpsc::Sender<RigRequest>,
_callsign: Option<String>, _callsign: Option<String>,
listen_addr: SocketAddr, listen_addr: SocketAddr,
_context: std::sync::Arc<trx_frontend::FrontendRuntimeContext>,
) -> JoinHandle<()> { ) -> JoinHandle<()> {
tokio::spawn(async move { tokio::spawn(async move {
if let Err(e) = serve(listen_addr, state_rx, rig_tx).await { if let Err(e) = serve(listen_addr, state_rx, rig_tx).await {