aboutsummaryrefslogtreecommitdiffhomepage
path: root/crates/shirabe-php-rpc
diff options
context:
space:
mode:
Diffstat (limited to 'crates/shirabe-php-rpc')
-rw-r--r--crates/shirabe-php-rpc/php/guards/Composer/Util/Loop.php39
-rw-r--r--crates/shirabe-php-rpc/php/stubs/Composer/Util/Loop.php96
-rw-r--r--crates/shirabe-php-rpc/src/lib.rs4
3 files changed, 100 insertions, 39 deletions
diff --git a/crates/shirabe-php-rpc/php/guards/Composer/Util/Loop.php b/crates/shirabe-php-rpc/php/guards/Composer/Util/Loop.php
deleted file mode 100644
index 32648ece..00000000
--- a/crates/shirabe-php-rpc/php/guards/Composer/Util/Loop.php
+++ /dev/null
@@ -1,39 +0,0 @@
-<?php
-
-// Generated by scripts/plugin-stub-generator; do not edit by hand.
-// Guard for Composer\Util\Loop.
-// The Rust side owns this class and the worker has no proxy for it, so this
-// declaration shadows the real one: the constants and the hierarchy stay, while
-// constructing it or calling anything on it raises an explicit error.
-
-namespace Composer\Util;
-
-use Symfony\Component\Console\Helper\ProgressBar;
-
-class Loop
-{
- public function __construct(HttpDownloader $httpDownloader, ?ProcessExecutor $processExecutor = null)
- {
- \ShirabeUnsupportedClass::fail(self::class, '__construct');
- }
-
- public function getHttpDownloader(): HttpDownloader
- {
- \ShirabeUnsupportedClass::fail(self::class, 'getHttpDownloader');
- }
-
- public function getProcessExecutor(): ?ProcessExecutor
- {
- \ShirabeUnsupportedClass::fail(self::class, 'getProcessExecutor');
- }
-
- public function wait(array $promises, ?ProgressBar $progress = null): void
- {
- \ShirabeUnsupportedClass::fail(self::class, 'wait');
- }
-
- public function abortJobs(): void
- {
- \ShirabeUnsupportedClass::fail(self::class, 'abortJobs');
- }
-}
diff --git a/crates/shirabe-php-rpc/php/stubs/Composer/Util/Loop.php b/crates/shirabe-php-rpc/php/stubs/Composer/Util/Loop.php
new file mode 100644
index 00000000..61e6edfe
--- /dev/null
+++ b/crates/shirabe-php-rpc/php/stubs/Composer/Util/Loop.php
@@ -0,0 +1,96 @@
+<?php
+
+// Generated by scripts/plugin-stub-generator; do not edit by hand.
+// Proxy stub for Composer\Util\Loop: the public surface forwards to the Rust-side entity over RPC.
+
+namespace Composer\Util;
+
+use Symfony\Component\Console\Helper\ProgressBar;
+
+class Loop implements \ShirabeRustStub
+{
+ /** @var int */
+ protected $__rhandle;
+ /** @var int */
+ protected $__epoch;
+
+ /**
+ * Binds a stub the registry built for an existing entity. Proxy instantiation bypasses
+ * the constructor, which belongs to plugin code building a new entity instead.
+ */
+ public function __shirabeBind(int $rhandle, int $epoch): void
+ {
+ $this->__rhandle = $rhandle;
+ $this->__epoch = $epoch;
+ }
+
+ public function __destruct()
+ {
+ \ShirabeRustObjectRegistry::release($this->__rhandle);
+ }
+
+ public function __shirabeRustHandleDescriptor(): array
+ {
+ return [
+ '__rhandle' => $this->__rhandle,
+ '__class' => static::class,
+ '__epoch' => $this->__epoch,
+ ];
+ }
+
+ public function __clone()
+ {
+ // PHP has already shallow-copied this stub, so both copies would point at one
+ // entity and release it twice. The Rust side clones the entity instead, applying
+ // whatever __clone semantics the real class defines, and this copy rebinds to the
+ // fresh handle. Entities without clone semantics answer with an explicit error.
+ [$this->__rhandle, $this->__epoch] = \ShirabeRpcRuntime::callRust($this->__rhandle, '__shirabeClone', []);
+ \ShirabeRustObjectRegistry::adopt($this->__rhandle, $this);
+ }
+
+ public function __get($name)
+ {
+ return \ShirabeRpcRuntime::callRust($this->__rhandle, '__get', [$name]);
+ }
+
+ public function __set($name, $value): void
+ {
+ \ShirabeRpcRuntime::callRust($this->__rhandle, '__set', [$name, $value]);
+ }
+
+ public function __isset($name): bool
+ {
+ return \ShirabeRpcRuntime::callRust($this->__rhandle, '__isset', [$name]);
+ }
+
+ public function __unset($name): void
+ {
+ \ShirabeRpcRuntime::callRust($this->__rhandle, '__unset', [$name]);
+ }
+
+ public function __construct(HttpDownloader $httpDownloader, ?ProcessExecutor $processExecutor = null)
+ {
+ [$this->__rhandle, $this->__epoch] = \ShirabeRpcRuntime::callRust(0, '__shirabeConstruct', [static::class, [$httpDownloader, $processExecutor]]);
+ \ShirabeRustObjectRegistry::adopt($this->__rhandle, $this);
+ }
+
+ public function getHttpDownloader(): HttpDownloader
+ {
+ return \ShirabeRpcRuntime::callRust($this->__rhandle, 'getHttpDownloader', []);
+ }
+
+ public function getProcessExecutor(): ?ProcessExecutor
+ {
+ return \ShirabeRpcRuntime::callRust($this->__rhandle, 'getProcessExecutor', []);
+ }
+
+ public function wait(array $promises, ?ProgressBar $progress = null): void
+ {
+ \ShirabeRpcRuntime::callRust($this->__rhandle, 'wait', [$promises, $progress]);
+ }
+
+ public function abortJobs(): void
+ {
+ \ShirabeRpcRuntime::callRust($this->__rhandle, 'abortJobs', []);
+ }
+}
diff --git a/crates/shirabe-php-rpc/src/lib.rs b/crates/shirabe-php-rpc/src/lib.rs
index 3731c691..14e17e27 100644
--- a/crates/shirabe-php-rpc/src/lib.rs
+++ b/crates/shirabe-php-rpc/src/lib.rs
@@ -1044,6 +1044,10 @@ const STUB_FILES: &[(&str, &str)] = &[
"Composer/Util/HttpDownloader.php",
include_str!("../php/stubs/Composer/Util/HttpDownloader.php"),
),
+ (
+ "Composer/Util/Loop.php",
+ include_str!("../php/stubs/Composer/Util/Loop.php"),
+ ),
];
/// Hand-written worker-side classes (two-world implementations with behavior of their own, not