Skip to content

Commit 5950c14

Browse files
authored
Support swow psr7-plus interface for all components. (#5839)
1 parent 65a69f8 commit 5950c14

File tree

5 files changed

+27
-22
lines changed

5 files changed

+27
-22
lines changed

composer.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,8 @@
1919
"hyperf/server": "~3.1.0",
2020
"hyperf/support": "~3.1.0",
2121
"hyperf/utils": "~3.1.0",
22-
"multiplex/socket": "^1.0"
22+
"multiplex/socket": "^1.0",
23+
"swow/psr7-plus": "^1.0"
2324
},
2425
"autoload": {
2526
"psr-4": {

src/Contract/HttpMessageBuilderInterface.php

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -11,14 +11,15 @@
1111
*/
1212
namespace Hyperf\RpcMultiplex\Contract;
1313

14-
use Psr\Http\Message\ResponseInterface;
1514
use Psr\Http\Message\ServerRequestInterface;
15+
use Swow\Psr7\Message\ResponsePlusInterface;
16+
use Swow\Psr7\Message\ServerRequestPlusInterface;
1617

1718
interface HttpMessageBuilderInterface
1819
{
19-
public function buildRequest(array $data): ServerRequestInterface;
20+
public function buildRequest(array $data): ServerRequestPlusInterface;
2021

21-
public function buildResponse(ServerRequestInterface $request, array $data): ResponseInterface;
22+
public function buildResponse(ServerRequestInterface $request, array $data): ResponsePlusInterface;
2223

23-
public function persistToContext(ResponseInterface $response): ResponseInterface;
24+
public function persistToContext(ResponsePlusInterface $response): ResponsePlusInterface;
2425
}

src/CoreMiddleware.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,8 +21,8 @@
2121
use Hyperf\RpcMultiplex\Contract\HttpMessageBuilderInterface;
2222
use InvalidArgumentException;
2323
use Psr\Container\ContainerInterface;
24-
use Psr\Http\Message\ResponseInterface;
2524
use Psr\Http\Message\ServerRequestInterface;
25+
use Swow\Psr7\Message\ResponsePlusInterface;
2626
use Throwable;
2727

2828
class CoreMiddleware extends \Hyperf\RpcServer\CoreMiddleware
@@ -85,7 +85,7 @@ protected function handleMethodNotAllowed(array $methods, ServerRequestInterface
8585
return $this->handleNotFound($request);
8686
}
8787

88-
protected function transferToResponse($response, ServerRequestInterface $request): ResponseInterface
88+
protected function transferToResponse($response, ServerRequestInterface $request): ResponsePlusInterface
8989
{
9090
return $this->responseBuilder->buildResponse($request, $response);
9191
}

src/HttpMessageBuilder.php

Lines changed: 11 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -13,23 +13,25 @@
1313

1414
use Hyperf\Codec\Json;
1515
use Hyperf\Context\Context;
16+
use Hyperf\Context\ResponseContext;
1617
use Hyperf\Contract\PackerInterface;
1718
use Hyperf\HttpMessage\Server\Request;
1819
use Hyperf\HttpMessage\Stream\SwooleStream;
1920
use Hyperf\HttpMessage\Uri\Uri;
2021
use Hyperf\Rpc\Context as RpcContext;
2122
use Hyperf\RpcMultiplex\Contract\HttpMessageBuilderInterface;
22-
use Psr\Http\Message\ResponseInterface;
2323
use Psr\Http\Message\ServerRequestInterface;
2424
use Psr\Http\Message\UriInterface;
25+
use Swow\Psr7\Message\ResponsePlusInterface;
26+
use Swow\Psr7\Message\ServerRequestPlusInterface;
2527

2628
class HttpMessageBuilder implements HttpMessageBuilderInterface
2729
{
2830
public function __construct(protected PackerInterface $packer, protected RpcContext $context)
2931
{
3032
}
3133

32-
public function buildRequest(array $data): ServerRequestInterface
34+
public function buildRequest(array $data): ServerRequestPlusInterface
3335
{
3436
$uri = $this->buildUri(
3537
$data[Constant::PATH] ?? '/',
@@ -43,19 +45,19 @@ public function buildRequest(array $data): ServerRequestInterface
4345

4446
$request = new Request('POST', $uri, ['Content-Type' => 'application/json'], new SwooleStream(Json::encode($parsedData)));
4547

46-
return $request->withParsedBody($parsedData);
48+
return $request->setParsedBody($parsedData);
4749
}
4850

49-
public function buildResponse(ServerRequestInterface $request, array $data): ResponseInterface
51+
public function buildResponse(ServerRequestInterface $request, array $data): ResponsePlusInterface
5052
{
5153
$packed = $this->packer->pack($data);
5254

53-
return $this->response()->withBody(new SwooleStream($packed));
55+
return $this->response()->setBody(new SwooleStream($packed));
5456
}
5557

56-
public function persistToContext(ResponseInterface $response): ResponseInterface
58+
public function persistToContext(ResponsePlusInterface $response): ResponsePlusInterface
5759
{
58-
return Context::set(ResponseInterface::class, $response);
60+
return ResponseContext::set($response);
5961
}
6062

6163
protected function buildUri($path, $host, $port, $scheme = 'http'): UriInterface
@@ -68,8 +70,8 @@ protected function buildUri($path, $host, $port, $scheme = 'http'): UriInterface
6870
/**
6971
* Get response instance from context.
7072
*/
71-
protected function response(): ResponseInterface
73+
protected function response(): ResponsePlusInterface
7274
{
73-
return Context::get(ResponseInterface::class);
75+
return ResponseContext::get();
7476
}
7577
}

src/TcpServer.php

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
use Hyperf\Coroutine\Coroutine;
2020
use Hyperf\ExceptionHandler\ExceptionHandlerDispatcher;
2121
use Hyperf\HttpMessage\Server\Response;
22+
use Hyperf\HttpMessage\Stream\SwooleStream;
2223
use Hyperf\HttpServer\Contract\CoreMiddlewareInterface;
2324
use Hyperf\Rpc\Protocol;
2425
use Hyperf\Rpc\ProtocolManager;
@@ -33,9 +34,10 @@
3334
use Multiplex\Packet;
3435
use Psr\Container\ContainerInterface;
3536
use Psr\Http\Message\ResponseInterface;
36-
use Psr\Http\Message\ServerRequestInterface;
3737
use Swoole\Coroutine\Server\Connection;
3838
use Swoole\Server as SwooleServer;
39+
use Swow\Psr7\Message\ResponsePlusInterface;
40+
use Swow\Psr7\Message\ServerRequestPlusInterface;
3941

4042
use function Hyperf\Support\make;
4143

@@ -82,8 +84,7 @@ public function onReceive($server, int $fd, int $reactorId, string $data): void
8284
Coroutine::create(function () use ($server, $fd, $reactorId, $data) {
8385
$packet = $this->packetPacker->unpack($data);
8486
if ($packet->isHeartbeat()) {
85-
$response = new Response();
86-
$this->send($server, $fd, $response->withContent(Heartbeat::PONG));
87+
$this->send($server, $fd, (new Response())->setBody(new SwooleStream(Heartbeat::PONG)));
8788
return;
8889
}
8990

@@ -114,7 +115,7 @@ protected function createCoreMiddleware(): CoreMiddlewareInterface
114115
return new CoreMiddleware($this->container, $this->protocol, $this->messageBuilder, $this->serverName);
115116
}
116117

117-
protected function buildRequest(int $fd, int $reactorId, string $data): ServerRequestInterface
118+
protected function buildRequest(int $fd, int $reactorId, string $data): ServerRequestPlusInterface
118119
{
119120
$parsed = $this->packer->unpack($data);
120121

@@ -123,9 +124,9 @@ protected function buildRequest(int $fd, int $reactorId, string $data): ServerRe
123124
return $request->withAttribute('fd', $fd)->withAttribute('request_id', $parsed['id'] ?? null);
124125
}
125126

126-
protected function buildResponse(int $fd, $server): ResponseInterface
127+
protected function buildResponse(int $fd, $server): ResponsePlusInterface
127128
{
128-
return (new Response())->withAttribute('fd', $fd)->withAttribute('server', $server);
129+
return (new Response())->setAttribute('fd', $fd)->setAttribute('server', $server);
129130
}
130131

131132
protected function initProtocol()

0 commit comments

Comments
 (0)