This commit is contained in:
2023-10-17 21:18:52 +08:00
parent d5750a826b
commit 27cfc40d24
2 changed files with 81 additions and 2 deletions
+41 -1
View File
@@ -4,12 +4,16 @@ declare(strict_types=1);
namespace Kiri\Router;
use Exception;
use Kiri\Di\Inject\Container;
use Kiri\Di\Interface\ResponseEmitterInterface;
use Kiri\Events\EventDispatch;
use Kiri\Events\EventProvider;
use Kiri\Server\Events\OnAfterRequest;
use Psr\Container\ContainerExceptionInterface;
use Psr\Container\NotFoundExceptionInterface;
use Psr\Http\Message\ResponseInterface;
use ReflectionException;
use SplPriorityQueue;
/**
@@ -19,6 +23,42 @@ class SwooleHttpResponseEmitter implements ResponseEmitterInterface
{
/**
* @var EventProvider
*/
#[Container(EventProvider::class)]
public EventProvider $provider;
/**
* @var EventDispatch
*/
#[Container(EventDispatch::class)]
public EventDispatch $dispatch;
/**
* @var SplPriorityQueue
*/
protected SplPriorityQueue $events;
/**
* @var OnAfterRequest
*/
protected OnAfterRequest $afterRequest;
/**
* @return void
*/
public function init(): void
{
$this->afterRequest = new OnAfterRequest();
$this->events = $this->provider->getListenersForEvent($this->afterRequest);
}
/**
* @param Response $proxy
* @param object $response
@@ -35,7 +75,7 @@ class SwooleHttpResponseEmitter implements ResponseEmitterInterface
$proxy->end($response);
// event(new OnAfterRequest());
$this->dispatch->execute($this->events, $this->afterRequest);
}
+40 -1
View File
@@ -2,16 +2,55 @@
namespace Kiri\Router;
use Kiri\Di\Inject\Container;
use Kiri\Di\Interface\ResponseEmitterInterface;
use Kiri\Events\EventDispatch;
use Kiri\Events\EventProvider;
use Kiri\Server\Events\OnAfterRequest;
use Psr\Container\ContainerExceptionInterface;
use Psr\Container\NotFoundExceptionInterface;
use Psr\Http\Message\ResponseInterface;
use ReflectionException;
use SplPriorityQueue;
class SwowHttpResponseEmitter implements ResponseEmitterInterface
{
/**
* @var EventProvider
*/
#[Container(EventProvider::class)]
public EventProvider $provider;
/**
* @var EventDispatch
*/
#[Container(EventDispatch::class)]
public EventDispatch $dispatch;
/**
* @var SplPriorityQueue
*/
protected SplPriorityQueue $events;
/**
* @var OnAfterRequest
*/
protected OnAfterRequest $afterRequest;
/**
* @return void
*/
public function init(): void
{
$this->afterRequest = new OnAfterRequest();
$this->events = $this->provider->getListenersForEvent($this->afterRequest);
}
/**
* @param Response $proxy
@@ -29,7 +68,7 @@ class SwowHttpResponseEmitter implements ResponseEmitterInterface
$proxy->withHeader('Run-Time', $this->getRunTime($request));
$response->sendHttpResponse($proxy);
// event(new OnAfterRequest());
$this->dispatch->execute($this->events, $this->afterRequest);
}