Skip to content

Commit cc7f5d8

Browse files
committed
feat: coroutines option
1 parent 15d1195 commit cc7f5d8

1 file changed

Lines changed: 13 additions & 4 deletions

File tree

src/Http/Adapter/Swoole/Server.php

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -16,14 +16,15 @@ class Server extends Adapter
1616
protected SwooleServer $server;
1717
protected const REQUEST_CONTAINER_CONTEXT_KEY = '__utopia_http_request_container';
1818
protected Container $container;
19+
protected ?Container $requestContainer = null;
1920

2021
public function __construct(string $host, ?string $port = null, array $settings = [], ?Container $container = null)
2122
{
2223
$this->server = new SwooleServer($host, $port);
23-
$this->server->set(\array_merge($settings, [
24+
$this->server->set(\array_merge([
2425
'enable_coroutine' => true,
2526
'http_parse_cookie' => false,
26-
]));
27+
], $settings));
2728
$this->container = $container ?? new Container();
2829
}
2930

@@ -34,7 +35,11 @@ public function onRequest(callable $callback)
3435
$requestContainer->set('swooleRequest', fn () => $request);
3536
$requestContainer->set('swooleResponse', fn () => $response);
3637

37-
Coroutine::getContext()[self::REQUEST_CONTAINER_CONTEXT_KEY] = $requestContainer;
38+
if (Coroutine::getCid() !== -1) {
39+
Coroutine::getContext()[self::REQUEST_CONTAINER_CONTEXT_KEY] = $requestContainer;
40+
} else {
41+
$this->requestContainer = $requestContainer;
42+
}
3843

3944
$utopiaRequest = new Request($request);
4045
$utopiaResponse = new Response($response);
@@ -45,7 +50,11 @@ public function onRequest(callable $callback)
4550

4651
public function getContainer(): Container
4752
{
48-
return Coroutine::getContext()[self::REQUEST_CONTAINER_CONTEXT_KEY] ?? $this->container;
53+
if (Coroutine::getCid() !== -1) {
54+
return Coroutine::getContext()[self::REQUEST_CONTAINER_CONTEXT_KEY] ?? $this->container;
55+
}
56+
57+
return $this->requestContainer ?? $this->container;
4958
}
5059

5160
public function onStart(callable $callback)

0 commit comments

Comments
 (0)