fix: update process-wrap to v9.0 (#586)

This commit is contained in:
Dale Seo 2025-12-15 02:05:06 -05:00 • committed by GitHub
commit d7a05aa43f
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 11 additions and 11 deletions

View file

@ -48,7 +48,7 @@ url = { version = "2.4", optional = true }
tower-service = { version = "0.3", optional = true } tower-service = { version = "0.3", optional = true }
# for child process transport # for child process transport
process-wrap = { version = "8.2", features = ["tokio1"], optional = true } process-wrap = { version = "9.0", features = ["tokio1"], optional = true }
# for ws transport # for ws transport
# tokio-tungstenite ={ version = "0.26", optional = true } # tokio-tungstenite ={ version = "0.26", optional = true }

View file

@ -1,7 +1,7 @@
use std::process::Stdio; use std::process::Stdio;
use futures::future::Future; use futures::future::Future;
use process_wrap::tokio::{TokioChildWrapper, TokioCommandWrap}; use process_wrap::tokio::{ChildWrapper, CommandWrap};
use tokio::{ use tokio::{
io::AsyncRead, io::AsyncRead,
process::{ChildStderr, ChildStdin, ChildStdout}, process::{ChildStderr, ChildStdin, ChildStdout},
@ -13,7 +13,7 @@ use crate::RoleClient;
const MAX_WAIT_ON_DROP_SECS: u64 = 3; const MAX_WAIT_ON_DROP_SECS: u64 = 3;
/// The parts of a child process. /// The parts of a child process.
type ChildProcessParts = ( type ChildProcessParts = (
Box<dyn TokioChildWrapper>, Box<dyn ChildWrapper>,
ChildStdout, ChildStdout,
ChildStdin, ChildStdin,
Option<ChildStderr>, Option<ChildStderr>,
@ -23,7 +23,7 @@ type ChildProcessParts = (
/// Returns `(child, stdout, stdin, stderr)` where `stderr` is `Some` only /// Returns `(child, stdout, stdin, stderr)` where `stderr` is `Some` only
/// if the process was spawned with `Stdio::piped()`. /// if the process was spawned with `Stdio::piped()`.
#[inline] #[inline]
fn child_process(mut child: Box<dyn TokioChildWrapper>) -> std::io::Result<ChildProcessParts> { fn child_process(mut child: Box<dyn ChildWrapper>) -> std::io::Result<ChildProcessParts> {
let child_stdin = match child.inner_mut().stdin().take() { let child_stdin = match child.inner_mut().stdin().take() {
Some(stdin) => stdin, Some(stdin) => stdin,
None => return Err(std::io::Error::other("stdin was already taken")), None => return Err(std::io::Error::other("stdin was already taken")),
@ -42,7 +42,7 @@ pub struct TokioChildProcess {
} }
pub struct ChildWithCleanup { pub struct ChildWithCleanup {
inner: Option<Box<dyn TokioChildWrapper>>, inner: Option<Box<dyn ChildWrapper>>,
} }
impl Drop for ChildWithCleanup { impl Drop for ChildWithCleanup {
@ -87,13 +87,13 @@ impl AsyncRead for TokioChildProcessOut {
impl TokioChildProcess { impl TokioChildProcess {
/// Convenience: spawn with default `piped` stdio /// Convenience: spawn with default `piped` stdio
pub fn new(command: impl Into<TokioCommandWrap>) -> std::io::Result<Self> { pub fn new(command: impl Into<CommandWrap>) -> std::io::Result<Self> {
let (proc, _ignored) = TokioChildProcessBuilder::new(command).spawn()?; let (proc, _ignored) = TokioChildProcessBuilder::new(command).spawn()?;
Ok(proc) Ok(proc)
} }
/// Builder entry-point allowing fine-grained stdio control. /// Builder entry-point allowing fine-grained stdio control.
pub fn builder(command: impl Into<TokioCommandWrap>) -> TokioChildProcessBuilder { pub fn builder(command: impl Into<CommandWrap>) -> TokioChildProcessBuilder {
TokioChildProcessBuilder::new(command) TokioChildProcessBuilder::new(command)
} }
@ -111,7 +111,7 @@ impl TokioChildProcess {
if let Some(mut child) = self.child.inner.take() { if let Some(mut child) = self.child.inner.take() {
self.transport.close().await?; self.transport.close().await?;
let wait_fut = Box::into_pin(child.wait()); let wait_fut = child.wait();
tokio::select! { tokio::select! {
_ = tokio::time::sleep(std::time::Duration::from_secs(MAX_WAIT_ON_DROP_SECS)) => { _ = tokio::time::sleep(std::time::Duration::from_secs(MAX_WAIT_ON_DROP_SECS)) => {
if let Err(e) = Box::into_pin(child.kill()).await { if let Err(e) = Box::into_pin(child.kill()).await {
@ -136,7 +136,7 @@ impl TokioChildProcess {
} }
/// Take ownership of the inner child process /// Take ownership of the inner child process
pub fn into_inner(mut self) -> Option<Box<dyn TokioChildWrapper>> { pub fn into_inner(mut self) -> Option<Box<dyn ChildWrapper>> {
self.child.inner.take() self.child.inner.take()
} }
@ -152,14 +152,14 @@ impl TokioChildProcess {
/// Builder for `TokioChildProcess` allowing custom `Stdio` configuration. /// Builder for `TokioChildProcess` allowing custom `Stdio` configuration.
pub struct TokioChildProcessBuilder { pub struct TokioChildProcessBuilder {
cmd: TokioCommandWrap, cmd: CommandWrap,
stdin: Stdio, stdin: Stdio,
stdout: Stdio, stdout: Stdio,
stderr: Stdio, stderr: Stdio,
} }
impl TokioChildProcessBuilder { impl TokioChildProcessBuilder {
fn new(cmd: impl Into<TokioCommandWrap>) -> Self { fn new(cmd: impl Into<CommandWrap>) -> Self {
Self { Self {
cmd: cmd.into(), cmd: cmd.into(),
stdin: Stdio::piped(), stdin: Stdio::piped(),