Use released Utopia coroutine adapter

This commit is contained in:
Chirag Aggarwal
2026-04-06 10:12:50 +05:30
parent af7883f366
commit edb533eaea
3 changed files with 7 additions and 98 deletions
+1 -1
View File
@@ -5,7 +5,6 @@ require_once __DIR__ . '/init/span.php';
$registerRequestResources = require __DIR__ . '/init/resources/request.php';
use Appwrite\Utopia\Http\Adapter\SwooleCoroutine\Server;
use Appwrite\Utopia\Request;
use Appwrite\Utopia\Response;
use Swoole\Table;
@@ -22,6 +21,7 @@ use Utopia\Database\Exception\Duplicate as DuplicateException;
use Utopia\Database\Helpers\ID;
use Utopia\Database\Helpers\Permission;
use Utopia\Database\Helpers\Role;
use Utopia\Http\Adapter\SwooleCoroutine\Server;
use Utopia\Http\Files;
use Utopia\Http\Http;
use Utopia\Logger\Log;
Generated
+6 -6
View File
@@ -4325,16 +4325,16 @@
},
{
"name": "utopia-php/http",
"version": "0.34.16",
"version": "0.34.17",
"source": {
"type": "git",
"url": "https://github.com/utopia-php/http.git",
"reference": "2b4021ba3f9d476264ce9fd6703d6c79de9add7f"
"reference": "d3e4143b8b06d9823d0c29a06dacefa5a1b93677"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/utopia-php/http/zipball/2b4021ba3f9d476264ce9fd6703d6c79de9add7f",
"reference": "2b4021ba3f9d476264ce9fd6703d6c79de9add7f",
"url": "https://api.github.com/repos/utopia-php/http/zipball/d3e4143b8b06d9823d0c29a06dacefa5a1b93677",
"reference": "d3e4143b8b06d9823d0c29a06dacefa5a1b93677",
"shasum": ""
},
"require": {
@@ -4373,9 +4373,9 @@
],
"support": {
"issues": "https://github.com/utopia-php/http/issues",
"source": "https://github.com/utopia-php/http/tree/0.34.16"
"source": "https://github.com/utopia-php/http/tree/0.34.17"
},
"time": "2026-03-20T10:39:07+00:00"
"time": "2026-04-06T04:40:23+00:00"
},
{
"name": "utopia-php/image",
@@ -1,91 +0,0 @@
<?php
namespace Appwrite\Utopia\Http\Adapter\SwooleCoroutine;
use Swoole\Coroutine;
use Swoole\Coroutine\Http\Server as SwooleServer;
use Swoole\Http\Request as SwooleRequest;
use Swoole\Http\Response as SwooleResponse;
use Utopia\DI\Container;
use Utopia\Http\Adapter;
use Utopia\Http\Adapter\SwooleCoroutine\Request;
use Utopia\Http\Adapter\SwooleCoroutine\Response;
class Server extends Adapter
{
protected const REQUEST_CONTAINER_CONTEXT_KEY = '__utopia_http_request_container';
protected SwooleServer $server;
protected Container $container;
/** @var callable|null */
protected $onStartCallback = null;
public function __construct(
string $host,
?string $port = null,
array $settings = [],
?Container $container = null,
) {
$this->server = new SwooleServer($host, $port, false, true);
$this->server->set(\array_merge($settings, [
'http_parse_cookie' => false,
]));
$this->container = $container ?? new Container();
}
public function onRequest(callable $callback)
{
$this->server->handle('/', function (SwooleRequest $request, SwooleResponse $response) use ($callback) {
$requestContainer = new Container($this->container);
$requestContainer->set('swooleRequest', fn () => $request);
$requestContainer->set('swooleResponse', fn () => $response);
Coroutine::getContext()[self::REQUEST_CONTAINER_CONTEXT_KEY] = $requestContainer;
try {
\call_user_func($callback, new Request($request), new Response($response));
} finally {
unset(Coroutine::getContext()[self::REQUEST_CONTAINER_CONTEXT_KEY]);
}
});
}
public function getContainer(): Container
{
if (Coroutine::getCid() !== -1) {
return Coroutine::getContext()[self::REQUEST_CONTAINER_CONTEXT_KEY] ?? $this->container;
}
return $this->container;
}
public function getServer(): SwooleServer
{
return $this->server;
}
public function onStart(callable $callback)
{
$this->onStartCallback = $callback;
}
public function start()
{
$startServer = function (): void {
if ($this->onStartCallback) {
\call_user_func($this->onStartCallback, $this);
}
$this->server->start();
};
if (Coroutine::getCid() !== -1) {
$startServer();
return;
}
\Swoole\Coroutine\run($startServer);
}
}