From 71aecea297387fbf35eafc0c77d873825627facf Mon Sep 17 00:00:00 2001 From: Val Packett Date: Thu, 17 Jul 2025 21:20:53 -0300 Subject: [PATCH] Extract run_unix_listener extension method --- sidebus-broker/src/bus.rs | 12 ++++++++++++ sidebus-broker/src/main.rs | 13 +++++++------ 2 files changed, 19 insertions(+), 6 deletions(-) diff --git a/sidebus-broker/src/bus.rs b/sidebus-broker/src/bus.rs index 8ecd7af..4b37ccc 100644 --- a/sidebus-broker/src/bus.rs +++ b/sidebus-broker/src/bus.rs @@ -76,6 +76,18 @@ impl HostedBus { } } +pub trait SharedHostedBus { + async fn run_unix_listener(self, listener: tokio::net::UnixListener); +} + +impl SharedHostedBus for Arc> { + async fn run_unix_listener(self, listener: tokio::net::UnixListener) { + while let Ok((socket, _remote_addr)) = listener.accept().await { + self.lock().await.connect_unix(socket).await.unwrap() + } + } +} + pub struct NameOwnerStream { _conn: zbus::Connection, stream: zbus::MessageStream, diff --git a/sidebus-broker/src/main.rs b/sidebus-broker/src/main.rs index b918c2e..bda6285 100644 --- a/sidebus-broker/src/main.rs +++ b/sidebus-broker/src/main.rs @@ -1,6 +1,7 @@ mod bus; mod vsock; +use bus::SharedHostedBus; use clap::Parser; use std::sync::Arc; use tokio::sync::Mutex; @@ -30,13 +31,13 @@ async fn main() -> eyre::Result<()> { let vm_bus = Arc::new(Mutex::new(vm_bus)); // Direct access for the host (just trying things out) - let unix_listener = tokio::net::UnixListener::bind("vmbus.sock")?; - tokio::spawn(enclose! { (vm_bus) async move { - while let Ok((socket, _remote_addr)) = unix_listener.accept().await { - vm_bus.lock().await.connect_unix(socket).await.unwrap() - } - } }); + tokio::spawn( + vm_bus + .clone() + .run_unix_listener(tokio::net::UnixListener::bind("vmbus.sock")?), + ); + // TODO: modprobe vhost_vsock first! // NOTE: Every individual D-Bus client inside of the VM is a new client here! vsock::ListenerBuilder::new(vsock::VsockAddr::new(vsock::VMADDR_CID_HOST, 4269)) .with_label("VM Bus")