modify plugin name
This commit is contained in:
@@ -7,12 +7,14 @@ use Kiri;
|
|||||||
use Kiri\Abstracts\Config;
|
use Kiri\Abstracts\Config;
|
||||||
use Kiri\Di\ContainerInterface;
|
use Kiri\Di\ContainerInterface;
|
||||||
use Kiri\Exception\ConfigException;
|
use Kiri\Exception\ConfigException;
|
||||||
|
use Kiri\Server\Events\OnBeforeShutdown;
|
||||||
use Kiri\Server\Events\OnShutdown;
|
use Kiri\Server\Events\OnShutdown;
|
||||||
use Psr\Container\ContainerExceptionInterface;
|
use Psr\Container\ContainerExceptionInterface;
|
||||||
use Psr\Container\NotFoundExceptionInterface;
|
use Psr\Container\NotFoundExceptionInterface;
|
||||||
use Psr\Log\LoggerInterface;
|
use Psr\Log\LoggerInterface;
|
||||||
use ReflectionException;
|
use ReflectionException;
|
||||||
use Swoole\Coroutine;
|
use Kiri\Server\Config as SConfig;
|
||||||
|
use Kiri\Di\LocalService;
|
||||||
use Swoole\Server;
|
use Swoole\Server;
|
||||||
use Kiri\Server\ServerInterface;
|
use Kiri\Server\ServerInterface;
|
||||||
use Kiri\Server\Constant;
|
use Kiri\Server\Constant;
|
||||||
@@ -67,6 +69,10 @@ class AsyncServer implements ServerInterface
|
|||||||
foreach ($service as $value) {
|
foreach ($service as $value) {
|
||||||
$this->addListener($value);
|
$this->addListener($value);
|
||||||
}
|
}
|
||||||
|
$rpcService = Config::get('rpc', []);
|
||||||
|
if (!empty($rpcService)) {
|
||||||
|
$this->addListener(instance(SConfig::class, [], $rpcService));
|
||||||
|
}
|
||||||
$this->processManager->batch(Config::get('processes', []), $this->server);
|
$this->processManager->batch(Config::get('processes', []), $this->server);
|
||||||
$this->processManager->batch($this->getProcess(), $this->server);
|
$this->processManager->batch($this->getProcess(), $this->server);
|
||||||
}
|
}
|
||||||
@@ -97,7 +103,7 @@ class AsyncServer implements ServerInterface
|
|||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param \Kiri\Server\Config $config
|
* @param SConfig $config
|
||||||
* @param int $daemon
|
* @param int $daemon
|
||||||
* @return void
|
* @return void
|
||||||
* @throws ConfigException
|
* @throws ConfigException
|
||||||
@@ -105,7 +111,7 @@ class AsyncServer implements ServerInterface
|
|||||||
* @throws NotFindClassException
|
* @throws NotFindClassException
|
||||||
* @throws NotFoundExceptionInterface
|
* @throws NotFoundExceptionInterface
|
||||||
*/
|
*/
|
||||||
private function createBaseServer(\Kiri\Server\Config $config, int $daemon = 0): void
|
private function createBaseServer(SConfig $config, int $daemon = 0): void
|
||||||
{
|
{
|
||||||
$match = $this->getServerClass($config->type);
|
$match = $this->getServerClass($config->type);
|
||||||
if (is_null($match)) {
|
if (is_null($match)) {
|
||||||
@@ -125,13 +131,13 @@ class AsyncServer implements ServerInterface
|
|||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param \Kiri\Server\Config $config
|
* @param SConfig $config
|
||||||
* @param int $daemon
|
* @param int $daemon
|
||||||
* @return array
|
* @return array
|
||||||
* @throws Exception
|
* @throws Exception
|
||||||
* @throws ConfigException
|
* @throws ConfigException
|
||||||
*/
|
*/
|
||||||
protected function systemConfig(\Kiri\Server\Config $config, int $daemon): array
|
protected function systemConfig(SConfig $config, int $daemon): array
|
||||||
{
|
{
|
||||||
$settings = array_merge(Config::get('server.settings', []), $config->settings);
|
$settings = array_merge(Config::get('server.settings', []), $config->settings);
|
||||||
$settings[Constant::OPTION_DAEMONIZE] = (bool)$daemon;
|
$settings[Constant::OPTION_DAEMONIZE] = (bool)$daemon;
|
||||||
@@ -145,13 +151,13 @@ class AsyncServer implements ServerInterface
|
|||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param \Kiri\Server\Config $config
|
* @param SConfig $config
|
||||||
* @return void
|
* @return void
|
||||||
* @throws ContainerExceptionInterface
|
* @throws ContainerExceptionInterface
|
||||||
* @throws NotFoundExceptionInterface
|
* @throws NotFoundExceptionInterface
|
||||||
* @throws Exception
|
* @throws Exception
|
||||||
*/
|
*/
|
||||||
public function addListener(\Kiri\Server\Config $config): void
|
public function addListener(SConfig $config): void
|
||||||
{
|
{
|
||||||
$port = $this->server->addlistener($config->host, $config->port, $config->mode);
|
$port = $this->server->addlistener($config->host, $config->port, $config->mode);
|
||||||
if ($port === false) {
|
if ($port === false) {
|
||||||
@@ -163,7 +169,47 @@ class AsyncServer implements ServerInterface
|
|||||||
$port->set($this->resetSettings($config->type, $config->settings));
|
$port->set($this->resetSettings($config->type, $config->settings));
|
||||||
|
|
||||||
$this->onEventListen($port, $config->getEvents());
|
$this->onEventListen($port, $config->getEvents());
|
||||||
Kiri::app()->set($config->getName(), $port);
|
$this->container->get(LocalService::class)->set($config->getName(), $port);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param array $signal
|
||||||
|
* @return void
|
||||||
|
* @throws ContainerExceptionInterface
|
||||||
|
* @throws NotFoundExceptionInterface
|
||||||
|
* @throws Exception
|
||||||
|
*/
|
||||||
|
public function onSignal(array $signal): void
|
||||||
|
{
|
||||||
|
pcntl_signal(SIGINT, [$this, 'onSigint']);
|
||||||
|
foreach ($signal as $sig => $value) {
|
||||||
|
if (is_array($value) && is_string($value[0])) {
|
||||||
|
$value[0] = $this->container->get($value[0]);
|
||||||
|
}
|
||||||
|
if (!is_callable($value, true)) {
|
||||||
|
throw new Exception('Register signal callback must can exec.');
|
||||||
|
}
|
||||||
|
pcntl_signal($sig, $value);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return void
|
||||||
|
* @throws ContainerExceptionInterface
|
||||||
|
* @throws NotFoundExceptionInterface
|
||||||
|
* @throws ReflectionException
|
||||||
|
*/
|
||||||
|
public function onSigint(): void
|
||||||
|
{
|
||||||
|
try {
|
||||||
|
$this->dispatch->dispatch(new OnBeforeShutdown());
|
||||||
|
} catch (\Throwable $exception) {
|
||||||
|
$this->logger->error($exception->getMessage());
|
||||||
|
} finally {
|
||||||
|
$this->shutdown();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -1,242 +0,0 @@
|
|||||||
<?php
|
|
||||||
|
|
||||||
namespace Kiri\Server\Abstracts;
|
|
||||||
|
|
||||||
use Kiri\Abstracts\Config;
|
|
||||||
use Kiri\Di\ContainerInterface;
|
|
||||||
use Kiri\Events\EventDispatch;
|
|
||||||
use Kiri\Events\EventProvider;
|
|
||||||
use Kiri\Exception\ConfigException;
|
|
||||||
use Kiri\Server\Constant;
|
|
||||||
use Kiri\Server\Events\OnShutdown;
|
|
||||||
use Kiri\Server\Events\OnWorkerStart;
|
|
||||||
use Kiri\Server\Events\OnWorkerStop;
|
|
||||||
use Kiri\Server\ServerInterface;
|
|
||||||
use Psr\Container\ContainerExceptionInterface;
|
|
||||||
use Psr\Container\NotFoundExceptionInterface;
|
|
||||||
use Psr\Log\LoggerInterface;
|
|
||||||
use Swoole\Coroutine;
|
|
||||||
use Swoole\Http\Request;
|
|
||||||
use Swoole\Http\Response;
|
|
||||||
use Swoole\Process;
|
|
||||||
use Swoole\Server;
|
|
||||||
use function Swoole\Coroutine\run;
|
|
||||||
|
|
||||||
|
|
||||||
class CoroutineServer implements ServerInterface
|
|
||||||
{
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @var array<Coroutine\Server|Coroutine\Http\Server>
|
|
||||||
*/
|
|
||||||
private array $servers = [];
|
|
||||||
|
|
||||||
|
|
||||||
use TraitServer;
|
|
||||||
|
|
||||||
|
|
||||||
private bool $isShutdown = false;
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @param Config $config
|
|
||||||
* @param ContainerInterface $container
|
|
||||||
* @param EventDispatch $dispatch
|
|
||||||
* @param EventProvider $provider
|
|
||||||
* @param LoggerInterface $logger
|
|
||||||
* @param ProcessManager $processManager
|
|
||||||
* @param array $params
|
|
||||||
*/
|
|
||||||
public function __construct(public Config $config,
|
|
||||||
public ContainerInterface $container,
|
|
||||||
public EventDispatch $dispatch,
|
|
||||||
public EventProvider $provider,
|
|
||||||
public LoggerInterface $logger,
|
|
||||||
public ProcessManager $processManager,
|
|
||||||
public array $params = []
|
|
||||||
)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @param string $name
|
|
||||||
* @return Server|Coroutine\Server|Coroutine\Http\Server|null
|
|
||||||
*/
|
|
||||||
public function getServer(string $name = ''): Server|Coroutine\Server|Coroutine\Http\Server|null
|
|
||||||
{
|
|
||||||
if (empty($this->servers)) {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
if (empty($name)) {
|
|
||||||
return current($this->servers);
|
|
||||||
}
|
|
||||||
return $this->servers[$name] ?? null;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @param array $service
|
|
||||||
* @param int $daemon
|
|
||||||
* @return void
|
|
||||||
* @throws ContainerExceptionInterface
|
|
||||||
* @throws NotFoundExceptionInterface
|
|
||||||
*/
|
|
||||||
public function initCoreServers(array $service, int $daemon = 0): void
|
|
||||||
{
|
|
||||||
$this->provider->on(OnShutdown::class, function () {
|
|
||||||
$process = $this->container->get(ProcessManager::class);
|
|
||||||
$process->shutdown();
|
|
||||||
});
|
|
||||||
|
|
||||||
// TODO: Implement initCoreServers() method.
|
|
||||||
$service = $this->genConfigService($service);
|
|
||||||
foreach ($service as $value) {
|
|
||||||
$this->addListener($value);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @param \Kiri\Server\Config $config
|
|
||||||
* @return void
|
|
||||||
* @throws ContainerExceptionInterface
|
|
||||||
* @throws NotFoundExceptionInterface
|
|
||||||
*/
|
|
||||||
public function addListener(\Kiri\Server\Config $config): void
|
|
||||||
{
|
|
||||||
// TODO: Implement addListener() method.
|
|
||||||
$class = $this->getCoroutineServerClass($config->type);
|
|
||||||
|
|
||||||
/** @var Coroutine\Server|Coroutine\Http\Server $server */
|
|
||||||
$server = new $class($config->host, $config->port);
|
|
||||||
$server->set($config->settings);
|
|
||||||
if (!($server instanceof Coroutine\Server)) {
|
|
||||||
$this->onRequestCallback($server, $config);
|
|
||||||
} else {
|
|
||||||
$this->onTcpConnection($server, $config);
|
|
||||||
}
|
|
||||||
$this->servers[$config->name] = $server;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @param Coroutine\Http\Server $server
|
|
||||||
* @param \Kiri\Server\Config $config
|
|
||||||
* @return void
|
|
||||||
* @throws ContainerExceptionInterface
|
|
||||||
* @throws NotFoundExceptionInterface
|
|
||||||
*/
|
|
||||||
public function onRequestCallback(Coroutine\Http\Server $server, \Kiri\Server\Config $config): void
|
|
||||||
{
|
|
||||||
$requestCallback = $config->events[Constant::REQUEST] ?? null;
|
|
||||||
if (empty($requestCallback)) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
if (is_array($requestCallback) && is_string($requestCallback[0])) {
|
|
||||||
$requestCallback[0] = $this->container->get($requestCallback[0]);
|
|
||||||
}
|
|
||||||
$server->handle('/', $requestCallback);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @param Coroutine\Server $server
|
|
||||||
* @param \Kiri\Server\Config $config
|
|
||||||
* @return void
|
|
||||||
* @throws ContainerExceptionInterface
|
|
||||||
* @throws NotFoundExceptionInterface
|
|
||||||
*/
|
|
||||||
public function onTcpConnection(Coroutine\Server $server, \Kiri\Server\Config $config): void
|
|
||||||
{
|
|
||||||
$requestCallback = $config->events[Constant::RECEIVE] ?? null;
|
|
||||||
if (is_null($requestCallback)) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
if (is_array($requestCallback) && is_string($requestCallback[0])) {
|
|
||||||
$requestCallback[0] = $this->container->get($requestCallback[0]);
|
|
||||||
}
|
|
||||||
$closeCallback = $config->events[Constant::CLOSE] ?? null;
|
|
||||||
$server->handle(function (Coroutine\Server\Connection $connection) use ($requestCallback, $closeCallback) {
|
|
||||||
|
|
||||||
defer(function () use ($connection, $closeCallback) {
|
|
||||||
call_user_func($closeCallback, $connection->exportSocket()->fd);
|
|
||||||
});
|
|
||||||
while (true) {
|
|
||||||
$read = $connection->recv();
|
|
||||||
if ($read === null || $read === false) {
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
$requestCallback($read);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @return void
|
|
||||||
* @throws ContainerExceptionInterface
|
|
||||||
* @throws NotFoundExceptionInterface
|
|
||||||
* @throws \ReflectionException
|
|
||||||
*/
|
|
||||||
public function shutdown(): void
|
|
||||||
{
|
|
||||||
$this->isShutdown = true;
|
|
||||||
$this->processManager->shutdown();
|
|
||||||
foreach ($this->servers as $server) {
|
|
||||||
$server->shutdown();
|
|
||||||
}
|
|
||||||
$this->dispatch->dispatch(new OnShutdown());
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @return void
|
|
||||||
* @throws ConfigException
|
|
||||||
*/
|
|
||||||
public function start(): void
|
|
||||||
{
|
|
||||||
run(function () {
|
|
||||||
$provider = $this->container->get(EventProvider::class);
|
|
||||||
|
|
||||||
|
|
||||||
$merge = array_merge(Config::get('processes', []), $this->getProcess());
|
|
||||||
$this->processManager->batch($merge);
|
|
||||||
foreach ($this->servers as $server) {
|
|
||||||
Coroutine::create(function () use ($server) {
|
|
||||||
|
|
||||||
|
|
||||||
$this->runServer($server);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
});
|
|
||||||
Process::wait();
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @param Coroutine\Http\Server|Coroutine\Server $server
|
|
||||||
* @return void
|
|
||||||
* @throws ContainerExceptionInterface
|
|
||||||
* @throws NotFoundExceptionInterface
|
|
||||||
* @throws \ReflectionException
|
|
||||||
*/
|
|
||||||
public function runServer(Coroutine\Http\Server|Coroutine\Server $server): void
|
|
||||||
{
|
|
||||||
$this->dispatch->dispatch(new OnWorkerStart($server, 0));
|
|
||||||
try {
|
|
||||||
$server->start();
|
|
||||||
} catch (\Throwable $throwable) {
|
|
||||||
$this->logger->error($throwable->getMessage(), [$throwable]);
|
|
||||||
} finally {
|
|
||||||
$this->dispatch->dispatch(new OnWorkerStop($server, 0));
|
|
||||||
if ($this->isShutdown) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
$this->runServer($server);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
||||||
@@ -139,34 +139,12 @@ class ProcessManager
|
|||||||
if (empty($processes)) {
|
if (empty($processes)) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (is_null($server)) {
|
|
||||||
$this->poolManager($processes);
|
|
||||||
} else {
|
|
||||||
foreach ($processes as $process) {
|
|
||||||
[$customProcess, $sProcess] = $this->add($process);
|
|
||||||
|
|
||||||
$this->_process[$customProcess->getName()] = $customProcess;
|
|
||||||
|
|
||||||
$server->addProcess($sProcess);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @param array $processes
|
|
||||||
* @return void
|
|
||||||
* @throws ConfigException
|
|
||||||
*/
|
|
||||||
protected function poolManager(array $processes): void
|
|
||||||
{
|
|
||||||
foreach ($processes as $process) {
|
foreach ($processes as $process) {
|
||||||
/** @var BaseProcess $customProcess */
|
|
||||||
[$customProcess, $sProcess] = $this->add($process);
|
[$customProcess, $sProcess] = $this->add($process);
|
||||||
|
|
||||||
$this->_process[$customProcess->getName()] = $sProcess;
|
$this->_process[$customProcess->getName()] = $customProcess;
|
||||||
|
|
||||||
$sProcess->start();
|
$server->addProcess($sProcess);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+3
-12
@@ -55,7 +55,7 @@ class Server extends HttpService
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* @param State $state
|
* @param State $state
|
||||||
* @param Abstracts\CoroutineServer $manager
|
* @param AsyncServer $manager
|
||||||
* @param ContainerInterface $container
|
* @param ContainerInterface $container
|
||||||
* @param ProcessManager $processManager
|
* @param ProcessManager $processManager
|
||||||
* @param EventDispatch $dispatch
|
* @param EventDispatch $dispatch
|
||||||
@@ -65,7 +65,7 @@ class Server extends HttpService
|
|||||||
* @throws Exception
|
* @throws Exception
|
||||||
*/
|
*/
|
||||||
public function __construct(public State $state,
|
public function __construct(public State $state,
|
||||||
public CoroutineServer $manager,
|
public AsyncServer $manager,
|
||||||
public ContainerInterface $container,
|
public ContainerInterface $container,
|
||||||
public ProcessManager $processManager,
|
public ProcessManager $processManager,
|
||||||
public EventDispatch $dispatch,
|
public EventDispatch $dispatch,
|
||||||
@@ -115,18 +115,9 @@ class Server extends HttpService
|
|||||||
*/
|
*/
|
||||||
public function start(): void
|
public function start(): void
|
||||||
{
|
{
|
||||||
$this->container->mapping(Emitter::class, ResponseEmitter::class);
|
|
||||||
$this->container->mapping(ResponseInterface::class, Response::class);
|
|
||||||
$this->container->mapping(RequestInterface::class, Request::class);
|
|
||||||
|
|
||||||
$this->manager->initCoreServers(Config::get('server', [], true), $this->daemon);
|
$this->manager->initCoreServers(Config::get('server', [], true), $this->daemon);
|
||||||
|
|
||||||
$rpcService = Config::get('rpc', []);
|
$this->manager->onSignal(Config::get('signal', []));
|
||||||
if (!empty($rpcService)) {
|
|
||||||
$this->manager->addListener($this->container->create(\Kiri\Server\Config::class, [], $rpcService));
|
|
||||||
}
|
|
||||||
|
|
||||||
pcntl_signal(SIGINT, [$this, 'onSigint']);
|
|
||||||
|
|
||||||
$this->onHotReload();
|
$this->onHotReload();
|
||||||
|
|
||||||
|
|||||||
+7
-5
@@ -28,11 +28,15 @@ class ServerCommand extends Command
|
|||||||
const ACTIONS = ['start', 'stop', 'restart'];
|
const ACTIONS = ['start', 'stop', 'restart'];
|
||||||
|
|
||||||
|
|
||||||
|
private Server $server;
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @return void
|
* @return void
|
||||||
*/
|
*/
|
||||||
protected function configure(): void
|
protected function configure(): void
|
||||||
{
|
{
|
||||||
|
$this->server = Kiri::getDi()->get(Server::class);
|
||||||
$this->setName('sw:server')
|
$this->setName('sw:server')
|
||||||
->setDescription('server start|stop|reload|restart')
|
->setDescription('server start|stop|reload|restart')
|
||||||
->addArgument('action', InputArgument::OPTIONAL, 'run action', 'start')
|
->addArgument('action', InputArgument::OPTIONAL, 'run action', 'start')
|
||||||
@@ -85,8 +89,7 @@ class ServerCommand extends Command
|
|||||||
*/
|
*/
|
||||||
protected function stop(): int
|
protected function stop(): int
|
||||||
{
|
{
|
||||||
$manager = Kiri::app()->getServer();
|
$this->server->shutdown();
|
||||||
$manager->shutdown();
|
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -101,9 +104,8 @@ class ServerCommand extends Command
|
|||||||
protected function start(InputInterface $input): int
|
protected function start(InputInterface $input): int
|
||||||
{
|
{
|
||||||
$this->scan_file();
|
$this->scan_file();
|
||||||
$manager = Kiri::app()->getServer();
|
$this->server->setDaemon((int)!is_null($input->getOption('daemon')));
|
||||||
$manager->setDaemon((int)!is_null($input->getOption('daemon')));
|
$this->server->start();
|
||||||
$manager->start();
|
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+11
-8
@@ -4,9 +4,11 @@ declare(strict_types=1);
|
|||||||
namespace Kiri\Server;
|
namespace Kiri\Server;
|
||||||
|
|
||||||
|
|
||||||
use Exception;
|
|
||||||
use Kiri\Abstracts\Providers;
|
use Kiri\Abstracts\Providers;
|
||||||
use Kiri\Application;
|
use Kiri\Di\LocalService;
|
||||||
|
use Psr\Container\ContainerExceptionInterface;
|
||||||
|
use Psr\Container\NotFoundExceptionInterface;
|
||||||
|
use Symfony\Component\Console\Application;
|
||||||
use Kiri;
|
use Kiri;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -18,14 +20,15 @@ class ServerProviders extends Providers
|
|||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param Application $application
|
* @param LocalService $application
|
||||||
* @throws Exception
|
* @throws ContainerExceptionInterface
|
||||||
|
* @throws NotFoundExceptionInterface
|
||||||
*/
|
*/
|
||||||
public function onImport(Application $application)
|
public function onImport(LocalService $application)
|
||||||
{
|
{
|
||||||
$container = Kiri::getDi();
|
$server = $this->container->get(ServerCommand::class);
|
||||||
|
|
||||||
$console = $container->get(\Symfony\Component\Console\Application::class);
|
$console = $this->container->get(Application::class);
|
||||||
$console->add($container->get(ServerCommand::class));
|
$console->add($server);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user