modify plugin name
This commit is contained in:
+34
-7
@@ -6,6 +6,8 @@ use Exception;
|
|||||||
use Kiri\Abstracts\Component;
|
use Kiri\Abstracts\Component;
|
||||||
use Kiri\Abstracts\Config;
|
use Kiri\Abstracts\Config;
|
||||||
use Kiri\Exception\ConfigException;
|
use Kiri\Exception\ConfigException;
|
||||||
|
use Kiri\Message\Emitter;
|
||||||
|
use Kiri\Message\ResponseEmitter;
|
||||||
use Kiri\Server\Contract\OnCloseInterface;
|
use Kiri\Server\Contract\OnCloseInterface;
|
||||||
use Kiri\Server\Contract\OnConnectInterface;
|
use Kiri\Server\Contract\OnConnectInterface;
|
||||||
use Kiri\Server\Contract\OnDisconnectInterface;
|
use Kiri\Server\Contract\OnDisconnectInterface;
|
||||||
@@ -19,6 +21,7 @@ use Kiri\Server\Handler\OnServerManager;
|
|||||||
use Kiri\Server\Handler\OnServerWorker;
|
use Kiri\Server\Handler\OnServerWorker;
|
||||||
use Kiri\Task\TaskManager;
|
use Kiri\Task\TaskManager;
|
||||||
use Psr\Container\ContainerExceptionInterface;
|
use Psr\Container\ContainerExceptionInterface;
|
||||||
|
use Psr\Container\ContainerInterface;
|
||||||
use Psr\Container\NotFoundExceptionInterface;
|
use Psr\Container\NotFoundExceptionInterface;
|
||||||
use Swoole\Http\Server as HServer;
|
use Swoole\Http\Server as HServer;
|
||||||
use Swoole\Server;
|
use Swoole\Server;
|
||||||
@@ -86,6 +89,17 @@ class ServerManager extends Component
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param ContainerInterface $container
|
||||||
|
* @param array $config
|
||||||
|
* @throws Exception
|
||||||
|
*/
|
||||||
|
public function __construct(public ContainerInterface $container,
|
||||||
|
public TaskManager $manager, array $config = [])
|
||||||
|
{
|
||||||
|
parent::__construct($config);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param string $type
|
* @param string $type
|
||||||
* @param string $host
|
* @param string $host
|
||||||
@@ -133,14 +147,13 @@ class ServerManager extends Component
|
|||||||
*/
|
*/
|
||||||
public function bindPipeMessage(): void
|
public function bindPipeMessage(): void
|
||||||
{
|
{
|
||||||
$pipeMessage = $this->getContainer()->get(OnPipeMessage::class);
|
$pipeMessage = $this->container->get(OnPipeMessage::class);
|
||||||
$this->server->on(Constant::PIPE_MESSAGE, [$pipeMessage, 'onPipeMessage']);
|
$this->server->on(Constant::PIPE_MESSAGE, [$pipeMessage, 'onPipeMessage']);
|
||||||
|
|
||||||
if (!isset($this->server->setting['task_worker_num']) || $this->server->setting['task_worker_num'] < 1) {
|
if (!isset($this->server->setting['task_worker_num']) || $this->server->setting['task_worker_num'] < 1) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
$this->manager->taskListener($this->server);
|
||||||
$this->getContainer()->get(TaskManager::class)->taskListener($this->server);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -215,6 +228,20 @@ class ServerManager extends Component
|
|||||||
if ($this->ports[$port] === false) {
|
if ($this->ports[$port] === false) {
|
||||||
throw new Exception("The port is already in use[$host::$port]");
|
throw new Exception("The port is already in use[$host::$port]");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$this->addServiceEvents($settings['events'] ?? [], $this->ports[$port]);
|
||||||
|
|
||||||
|
$this->ports[$port]->set($this->resetSettings($type, $settings));
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param string $type
|
||||||
|
* @param array $settings
|
||||||
|
* @return array
|
||||||
|
*/
|
||||||
|
private function resetSettings(string $type, array $settings): array
|
||||||
|
{
|
||||||
if ($type == Constant::SERVER_TYPE_HTTP && !isset($settings['settings']['open_http_protocol'])) {
|
if ($type == Constant::SERVER_TYPE_HTTP && !isset($settings['settings']['open_http_protocol'])) {
|
||||||
$settings['settings']['open_http_protocol'] = true;
|
$settings['settings']['open_http_protocol'] = true;
|
||||||
if (in_array($this->server->setting['dispatch_mode'], [2, 4])) {
|
if (in_array($this->server->setting['dispatch_mode'], [2, 4])) {
|
||||||
@@ -224,8 +251,7 @@ class ServerManager extends Component
|
|||||||
if ($type == Constant::SERVER_TYPE_WEBSOCKET && !isset($settings['settings']['open_websocket_protocol'])) {
|
if ($type == Constant::SERVER_TYPE_WEBSOCKET && !isset($settings['settings']['open_websocket_protocol'])) {
|
||||||
$settings['settings']['open_websocket_protocol'] = true;
|
$settings['settings']['open_websocket_protocol'] = true;
|
||||||
}
|
}
|
||||||
$this->ports[$port]->set($settings['settings'] ?? []);
|
return $settings['settings'] ?? [];
|
||||||
$this->addServiceEvents($settings['events'] ?? [], $this->ports[$port]);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -251,7 +277,8 @@ class ServerManager extends Component
|
|||||||
$this->server = new $match($host, $port, SWOOLE_PROCESS, $mode);
|
$this->server = new $match($host, $port, SWOOLE_PROCESS, $mode);
|
||||||
$this->server->set(array_merge(Config::get('server.settings', []), $settings['settings']));
|
$this->server->set(array_merge(Config::get('server.settings', []), $settings['settings']));
|
||||||
|
|
||||||
$this->getContainer()->setBindings(SwooleServerInterface::class, $this->server);
|
$this->container->setBindings(SwooleServerInterface::class, $this->server);
|
||||||
|
$this->container->setBindings(Emitter::class, ResponseEmitter::class);
|
||||||
|
|
||||||
$id = Config::get('id', 'system-service');
|
$id = Config::get('id', 'system-service');
|
||||||
|
|
||||||
@@ -285,7 +312,7 @@ class ServerManager extends Component
|
|||||||
{
|
{
|
||||||
foreach ($events as $name => $event) {
|
foreach ($events as $name => $event) {
|
||||||
if (is_array($event) && is_string($event[0])) {
|
if (is_array($event) && is_string($event[0])) {
|
||||||
$event[0] = $this->getContainer()->get($event[0]);
|
$event[0] = $this->container->get($event[0]);
|
||||||
}
|
}
|
||||||
$server->on($name, $event);
|
$server->on($name, $event);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user