rpc_binder: Refactor users of RpcServer to use new API
The Rust wrapper around RpcServer now returns a handle instead of
waiting for the server to finish. This allows us to simplify the users
of that API.
Test: atest -p packages/modules/Virtualization:avf-presubmit
Change-Id: I4b41f9f911f7d78e8149f6e3268aa2177596e2e5
diff --git a/authfs/fd_server/src/main.rs b/authfs/fd_server/src/main.rs
index f1fffdd..21d0e64 100644
--- a/authfs/fd_server/src/main.rs
+++ b/authfs/fd_server/src/main.rs
@@ -29,7 +29,7 @@
use clap::Parser;
use log::debug;
use nix::sys::stat::{umask, Mode};
-use rpcbinder::run_vsock_rpc_server;
+use rpcbinder::RpcServer;
use std::collections::BTreeMap;
use std::fs::File;
use std::os::unix::io::{FromRawFd, OwnedFd};
@@ -135,18 +135,14 @@
let old_umask = umask(Mode::empty());
debug!("Setting umask to 0 (old: {:03o})", old_umask.bits());
- let service = FdService::new_binder(fd_pool).as_binder();
debug!("fd_server is starting as a rpc service.");
- let retval = run_vsock_rpc_server(service, RPC_SERVICE_PORT, || {
- debug!("fd_server is ready");
- // Close the ready-fd if we were given one to signal our readiness.
- drop(ready_fd.take());
- });
+ let service = FdService::new_binder(fd_pool).as_binder();
+ let server = RpcServer::new_vsock(service, RPC_SERVICE_PORT)?;
+ debug!("fd_server is ready");
- if retval {
- debug!("RPC server has shut down gracefully");
- Ok(())
- } else {
- bail!("Premature termination of RPC server");
- }
+ // Close the ready-fd if we were given one to signal our readiness.
+ drop(ready_fd.take());
+
+ server.join();
+ Ok(())
}
diff --git a/authfs/service/src/main.rs b/authfs/service/src/main.rs
index 671c06a..e710f07 100644
--- a/authfs/service/src/main.rs
+++ b/authfs/service/src/main.rs
@@ -24,7 +24,7 @@
use anyhow::{bail, Result};
use log::*;
-use rpcbinder::run_init_unix_domain_rpc_server;
+use rpcbinder::RpcServer;
use std::ffi::OsString;
use std::fs::{create_dir, read_dir, remove_dir_all, remove_file};
use std::sync::atomic::{AtomicUsize, Ordering};
@@ -117,15 +117,11 @@
let service = AuthFsService::new_binder(debuggable).as_binder();
debug!("{} is starting as a rpc service.", AUTHFS_SERVICE_SOCKET_NAME);
- let retval = run_init_unix_domain_rpc_server(service, AUTHFS_SERVICE_SOCKET_NAME, || {
- info!("The RPC server '{}' is running.", AUTHFS_SERVICE_SOCKET_NAME);
- });
- if retval {
- info!("The RPC server at '{}' has shut down gracefully.", AUTHFS_SERVICE_SOCKET_NAME);
- Ok(())
- } else {
- bail!("Premature termination of the RPC server '{}'.", AUTHFS_SERVICE_SOCKET_NAME)
- }
+ let server = RpcServer::new_init_unix_domain(service, AUTHFS_SERVICE_SOCKET_NAME)?;
+ info!("The RPC server '{}' is running.", AUTHFS_SERVICE_SOCKET_NAME);
+ server.join();
+ info!("The RPC server at '{}' has shut down gracefully.", AUTHFS_SERVICE_SOCKET_NAME);
+ Ok(())
}
fn main() {