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/windows_pipes.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/windows_pipes.rs')
| -rw-r--r-- | crates/shirabe-external-packages/src/symfony/process/pipes/windows_pipes.rs | 14 |
1 files changed, 7 insertions, 7 deletions
diff --git a/crates/shirabe-external-packages/src/symfony/process/pipes/windows_pipes.rs b/crates/shirabe-external-packages/src/symfony/process/pipes/windows_pipes.rs index 7602e7d..a31f184 100644 --- a/crates/shirabe-external-packages/src/symfony/process/pipes/windows_pipes.rs +++ b/crates/shirabe-external-packages/src/symfony/process/pipes/windows_pipes.rs @@ -1,7 +1,7 @@ //! ref: composer/vendor/symfony/process/Pipes/WindowsPipes.php use indexmap::IndexMap; -use shirabe_php_shim::PhpMixed; +use shirabe_php_shim::{Descriptor, PhpMixed, PhpResource}; use crate::symfony::process::pipes::abstract_pipes::AbstractPipes; use crate::symfony::process::pipes::pipes_interface::PipesInterface; @@ -11,8 +11,8 @@ use crate::symfony::process::pipes::pipes_interface::PipesInterface; pub struct WindowsPipes { inner: AbstractPipes, files: IndexMap<i64, String>, - file_handles: IndexMap<i64, PhpMixed>, - lock_handles: IndexMap<i64, PhpMixed>, + file_handles: IndexMap<i64, PhpResource>, + lock_handles: IndexMap<i64, PhpResource>, read_bytes: IndexMap<i64, i64>, have_read_support: bool, } @@ -25,7 +25,7 @@ impl WindowsPipes { } impl PipesInterface for WindowsPipes { - fn get_descriptors(&mut self) -> Vec<PhpMixed> { + fn get_descriptors(&mut self) -> Vec<Descriptor> { let _ = ( &self.files, &self.file_handles, @@ -48,7 +48,7 @@ impl PipesInterface for WindowsPipes { } fn are_open(&self) -> bool { - shirabe_php_shim::php_truthy(&self.inner.pipes) && !self.file_handles.is_empty() + !self.inner.pipes.is_empty() && !self.file_handles.is_empty() } fn close(&mut self) { @@ -56,11 +56,11 @@ impl PipesInterface for WindowsPipes { todo!() } - fn pipes(&self) -> &PhpMixed { + fn pipes(&self) -> &IndexMap<i64, PhpResource> { &self.inner.pipes } - fn pipes_mut(&mut self) -> &mut PhpMixed { + fn pipes_mut(&mut self) -> &mut IndexMap<i64, PhpResource> { &mut self.inner.pipes } } |
