From c5fc34a106a706ac12925c4df273a926811d260b Mon Sep 17 00:00:00 2001 From: nsfisis Date: Wed, 24 Jun 2026 03:09:17 +0900 Subject: feat(process): redesign proc_* on PhpResource process handles proc_open/proc_close/proc_get_status/proc_terminate represented the process handle as a PhpMixed, which cannot hold a live child process or its pipes, so they were stubs or todo!(). Model the handle as a new PhpResource::Process variant and child pipes as a StreamBacking::Pipe, with a native Descriptor enum for descriptorspec; proc_open now returns io::Result and fills pipes as IndexMap. Rewire the Symfony Process pipes and the Console terminal/cursor onto the new types, removing the "PhpMixed cannot carry a PhpResource" todo!()s. The remaining todo!()s are genuine syscall leaves (proc_terminate signal delivery, stream_select, stream_set_blocking, posix_kill, pty, fd>=3) left unimplemented since no syscall crate is introduced. Co-Authored-By: Claude Opus 4.8 (1M context) --- .../src/symfony/process/pipes/pipes_interface.rs | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) (limited to 'crates/shirabe-external-packages/src/symfony/process/pipes/pipes_interface.rs') diff --git a/crates/shirabe-external-packages/src/symfony/process/pipes/pipes_interface.rs b/crates/shirabe-external-packages/src/symfony/process/pipes/pipes_interface.rs index e10b3b3..92d584d 100644 --- a/crates/shirabe-external-packages/src/symfony/process/pipes/pipes_interface.rs +++ b/crates/shirabe-external-packages/src/symfony/process/pipes/pipes_interface.rs @@ -1,14 +1,14 @@ //! ref: composer/vendor/symfony/process/Pipes/PipesInterface.php use indexmap::IndexMap; -use shirabe_php_shim::PhpMixed; +use shirabe_php_shim::{Descriptor, PhpResource}; pub const CHUNK_SIZE: i64 = 16384; /// PipesInterface manages descriptors and pipes for the use of proc_open. pub trait PipesInterface: std::fmt::Debug { /// Returns an array of descriptors for the use of proc_open. - fn get_descriptors(&mut self) -> Vec; + fn get_descriptors(&mut self) -> Vec; /// Returns an array of filenames indexed by their related stream in case these pipes use temporary files. fn get_files(&self) -> IndexMap; @@ -25,7 +25,7 @@ pub trait PipesInterface: std::fmt::Debug { /// Closes file handles and pipes. fn close(&mut self); - /// Accessor for the `pipes` property populated by proc_open. - fn pipes(&self) -> &PhpMixed; - fn pipes_mut(&mut self) -> &mut PhpMixed; + /// Accessor for the `pipes` property populated by proc_open, keyed by fd index. + fn pipes(&self) -> &IndexMap; + fn pipes_mut(&mut self) -> &mut IndexMap; } -- cgit v1.3.1