-
-
Notifications
You must be signed in to change notification settings - Fork 48
/
StreamedResponseListener.php
42 lines (35 loc) · 1.22 KB
/
StreamedResponseListener.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
<?php
declare(strict_types=1);
namespace Baldinof\RoadRunnerBundle\EventListener;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
use Symfony\Component\HttpKernel\Event\ResponseEvent;
use Symfony\Component\HttpKernel\EventListener\StreamedResponseListener as SymfonyStreamedResponseListener;
use Symfony\Component\HttpKernel\KernelEvents;
/**
* This listener decorates the default Symfony StreamedResponseListener and
* disables it when running RoadRunner workers.
*
* This is to prevent the response frome being sent by the listener.
*/
final class StreamedResponseListener implements EventSubscriberInterface
{
private $symfonyListener;
private $rrEnabled;
public function __construct(SymfonyStreamedResponseListener $symfonyListener, ?bool $rrEnabled)
{
$this->symfonyListener = $symfonyListener;
$this->rrEnabled = (bool) $rrEnabled;
}
public function onKernelResponse(ResponseEvent $event): void
{
if (!$this->rrEnabled) {
$this->symfonyListener->onKernelResponse($event);
}
}
public static function getSubscribedEvents(): array
{
return [
KernelEvents::RESPONSE => ['onKernelResponse', -1024],
];
}
}