From a1d7a7c1172ec95baeff81a72eeab63c6e883ca3 Mon Sep 17 00:00:00 2001 From: Jiahao XU <Jiahao_XU@outlook.com> Date: Wed, 20 Jul 2022 17:37:02 +1000 Subject: [PATCH] Refactor: Extract new mod `jobserver_client.rs` Signed-off-by: Jiahao XU <Jiahao_XU@outlook.com> --- src/helpers.rs | 21 +++------------------ src/helpers/jobserver_client.rs | 20 ++++++++++++++++++++ 2 files changed, 23 insertions(+), 18 deletions(-) create mode 100644 src/helpers/jobserver_client.rs diff --git a/src/helpers.rs b/src/helpers.rs index 5ad0e7d6..3dc2de96 100644 --- a/src/helpers.rs +++ b/src/helpers.rs @@ -1,9 +1,7 @@ use std::fmt::Debug; use std::fs; use std::io; -use std::num::NonZeroUsize; use std::path::{Path, PathBuf}; -use std::thread::available_parallelism; use bytes::Bytes; use cargo_toml::Manifest; @@ -30,6 +28,9 @@ pub use ui_thread::UIThread; mod extracter; mod stream_readable; +mod jobserver_client; +pub use jobserver_client::*; + mod path_ext; pub use path_ext::*; @@ -46,22 +47,6 @@ pub async fn await_task<T>(task: tokio::task::JoinHandle<miette::Result<T>>) -> } } -pub fn create_jobserver_client() -> Result<jobserver::Client, BinstallError> { - use jobserver::Client; - - // Safety: - // - // Client::from_env is unsafe because from_raw_fd is unsafe. - // It doesn't do anything that is actually unsafe, like - // dereferencing pointer. - if let Some(client) = unsafe { Client::from_env() } { - Ok(client) - } else { - let ncore = available_parallelism().map(NonZeroUsize::get).unwrap_or(1); - Ok(Client::new(ncore)?) - } -} - /// Load binstall metadata from the crate `Cargo.toml` at the provided path pub fn load_manifest_path<P: AsRef<Path>>( manifest_path: P, diff --git a/src/helpers/jobserver_client.rs b/src/helpers/jobserver_client.rs new file mode 100644 index 00000000..740fcc38 --- /dev/null +++ b/src/helpers/jobserver_client.rs @@ -0,0 +1,20 @@ +use std::num::NonZeroUsize; +use std::thread::available_parallelism; + +use crate::BinstallError; + +pub fn create_jobserver_client() -> Result<jobserver::Client, BinstallError> { + use jobserver::Client; + + // Safety: + // + // Client::from_env is unsafe because from_raw_fd is unsafe. + // It doesn't do anything that is actually unsafe, like + // dereferencing pointer. + if let Some(client) = unsafe { Client::from_env() } { + Ok(client) + } else { + let ncore = available_parallelism().map(NonZeroUsize::get).unwrap_or(1); + Ok(Client::new(ncore)?) + } +}