aboutsummaryrefslogtreecommitdiffhomepage
path: root/crates/shirabe-external-packages/src/symfony/process/pipes/pipes_interface.rs
diff options
context:
space:
mode:
authornsfisis <nsfisis@gmail.com>2026-06-24 03:09:17 +0900
committernsfisis <nsfisis@gmail.com>2026-06-24 03:09:17 +0900
commitc5fc34a106a706ac12925c4df273a926811d260b (patch)
tree24e798c4a00b32aa1a1f155b705d02fba9895875 /crates/shirabe-external-packages/src/symfony/process/pipes/pipes_interface.rs
parentb2b321a26f6a628ee8e6757eb8577613e2024e70 (diff)
downloadphp-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.rs10
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>;
}