From b6152cda5cef1df604acc51ff6b9e11a73d4eee8 Mon Sep 17 00:00:00 2001 From: Zach Johnson Date: Thu, 19 Nov 2020 11:17:13 -0800 Subject: [PATCH] rusty-gd: swap rootcanal config to a more canonical ordering also, add helper to tidy up creating a socket addr from it Bug: 171749953 Tag: #gd-refactor Test: gd/cert/run --rhost SimpleHalTest Change-Id: Ib17a35a82bb78fb4ed21c03c88bd67466ef5d133 --- gd/rust/facade/src/lib.rs | 2 +- gd/rust/hal/src/rootcanal_hal.rs | 18 +++++++++++------- 2 files changed, 12 insertions(+), 8 deletions(-) diff --git a/gd/rust/facade/src/lib.rs b/gd/rust/facade/src/lib.rs index 30fcf2ed8..724b4bcbd 100644 --- a/gd/rust/facade/src/lib.rs +++ b/gd/rust/facade/src/lib.rs @@ -119,7 +119,7 @@ impl FacadeServiceManager { registry.inject(local_rt.clone()).await; if let Some(rc_port) = rootcanal_port { registry - .inject(RootcanalConfig::new(rc_port, "127.0.0.1")) + .inject(RootcanalConfig::new("127.0.0.1", rc_port)) .await; } diff --git a/gd/rust/hal/src/rootcanal_hal.rs b/gd/rust/hal/src/rootcanal_hal.rs index de2e39139..e7de64ae6 100644 --- a/gd/rust/hal/src/rootcanal_hal.rs +++ b/gd/rust/hal/src/rootcanal_hal.rs @@ -25,10 +25,10 @@ module! { #[provides] async fn provide_rootcanal_hal(config: RootcanalConfig, rt: Arc) -> HalExports { let (hal_exports, hal) = Hal::new(); - let ipaddr = IpAddr::from_str(&config.server_address).unwrap(); - let socket_addr = SocketAddr::new(ipaddr, config.port); - let stream = TcpStream::connect(&socket_addr).await.unwrap(); - let (reader, writer) = stream.into_split(); + let (reader, writer) = TcpStream::connect(&config.to_socket_addr().unwrap()) + .await + .expect("unable to create stream to rootcanal") + .into_split(); rt.spawn(dispatch_incoming(hal.evt_tx, hal.acl_tx, reader)); rt.spawn(dispatch_outgoing(hal.cmd_rx, hal.acl_rx, writer)); @@ -39,18 +39,22 @@ async fn provide_rootcanal_hal(config: RootcanalConfig, rt: Arc) -> Hal /// Rootcanal configuration #[derive(Clone, Debug, Default)] pub struct RootcanalConfig { + address: String, port: u16, - server_address: String, } impl RootcanalConfig { /// Create a rootcanal config - pub fn new(port: u16, server_address: &str) -> Self { + pub fn new(address: &str, port: u16) -> Self { Self { + address: String::from(address), port, - server_address: String::from(server_address), } } + + fn to_socket_addr(&self) -> Result { + Ok(SocketAddr::new(IpAddr::from_str(&self.address)?, self.port)) + } } /// Send HCI events received from the HAL to the HCI layer -- 2.11.0