diff options
| author | nsfisis <nsfisis@gmail.com> | 2026-06-24 03:09:17 +0900 |
|---|---|---|
| committer | nsfisis <nsfisis@gmail.com> | 2026-06-24 03:09:17 +0900 |
| commit | c5fc34a106a706ac12925c4df273a926811d260b (patch) | |
| tree | 24e798c4a00b32aa1a1f155b705d02fba9895875 /crates/shirabe-external-packages/src/symfony/process/pipes/pipes_interface.rs | |
| parent | b2b321a26f6a628ee8e6757eb8577613e2024e70 (diff) | |
| download | php-shirabe-c5fc34a106a706ac12925c4df273a926811d260b.tar.gz php-shirabe-c5fc34a106a706ac12925c4df273a926811d260b.tar.zst php-shirabe-c5fc34a106a706ac12925c4df273a926811d260b.zip | |
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<i64, PhpResource>.
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) <noreply@anthropic.com>
Diffstat (limited to 'crates/shirabe-external-packages/src/symfony/process/pipes/pipes_interface.rs')
| -rw-r--r-- | crates/shirabe-external-packages/src/symfony/process/pipes/pipes_interface.rs | 10 |
1 files changed, 5 insertions, 5 deletions
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<PhpMixed>; + fn get_descriptors(&mut self) -> Vec<Descriptor>; /// Returns an array of filenames indexed by their related stream in case these pipes use temporary files. fn get_files(&self) -> IndexMap<i64, String>; @@ -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<i64, PhpResource>; + fn pipes_mut(&mut self) -> &mut IndexMap<i64, PhpResource>; } |
