20
20
use Micro \Plugin \Http \Facade \HttpFacadeInterface ;
21
21
use Micro \Plugin \Http \Facade \HttpRoadrunnerFacadeInterface ;
22
22
use Nyholm \Psr7 \Factory \Psr17Factory ;
23
+ use Nyholm \Psr7 \Response as Psr7Response ;
23
24
use Spiral \RoadRunner ;
24
25
use Symfony \Bridge \PsrHttpMessage \Factory \HttpFoundationFactory ;
25
26
use Symfony \Bridge \PsrHttpMessage \Factory \PsrHttpFactory ;
28
29
{
29
30
public function __construct (
30
31
private HttpFacadeInterface $ httpFacade ,
31
- private HttpRoadrunnerFacadeInterface $ httpRoadrunnerFacade
32
+ private HttpRoadrunnerFacadeInterface $ httpRoadrunnerFacade,
32
33
) {
33
34
}
34
35
@@ -51,17 +52,25 @@ public function on(EventInterface $event): void
51
52
$ psr17Factory = new Psr17Factory ();
52
53
$ httpMessageFactory = new PsrHttpFactory ($ psr17Factory , $ psr17Factory , $ psr17Factory , $ psr17Factory );
53
54
54
- $ worker = RoadRunner \Worker::create ();
55
- $ worker = new RoadRunner \Http \PSR7Worker ($ worker , $ psr17Factory , $ psr17Factory , $ psr17Factory );
55
+ $ psr7 = new RoadRunner \Http \PSR7Worker (RoadRunner \Worker::create (), $ psr17Factory , $ psr17Factory , $ psr17Factory );
56
56
$ i = 0 ;
57
57
$ gcCollectStep = $ this ->httpRoadrunnerFacade ->getGcCollectCyclesCount ();
58
- while ($ request = $ worker ->waitRequest ()) {
58
+ while (true ) {
59
+ try {
60
+ $ request = $ psr7 ->waitRequest ();
61
+ } catch (\Throwable $ e ) {
62
+ $ psr7 ->respond (new Psr7Response (400 ));
63
+
64
+ continue ;
65
+ }
66
+
59
67
try {
60
68
$ appRequest = $ httpFoundationFactory ->createRequest ($ request );
61
69
$ appResponse = $ this ->httpFacade ->execute ($ appRequest , false );
62
- $ worker ->respond ($ httpMessageFactory ->createResponse ($ appResponse ));
70
+ $ psr7 ->respond ($ httpMessageFactory ->createResponse ($ appResponse ));
63
71
} catch (\Throwable $ e ) {
64
- $ worker ->getWorker ()->error ((string ) $ e );
72
+ $ psr7 ->respond (new Psr7Response (500 ));
73
+ $ psr7 ->getWorker ()->error ((string ) $ e );
65
74
} finally {
66
75
if (++$ i === $ gcCollectStep ) {
67
76
gc_collect_cycles ();
0 commit comments