This commit is contained in:
2021-08-05 16:15:42 +08:00
parent dca2948371
commit 4b16d82bb9
8 changed files with 73 additions and 52 deletions
+1 -1
View File
@@ -12,7 +12,7 @@ namespace HttpServer\Abstracts;
use Swoole\WebSocket\Server; use Swoole\WebSocket\Server;
/** /**
* Class ServerDefaultEvent * Class OnServerDefault
* @package Snowflake\Snowflake\Server * @package Snowflake\Snowflake\Server
*/ */
abstract class ServerBase extends HttpService abstract class ServerBase extends HttpService
+47
View File
@@ -0,0 +1,47 @@
<?php
namespace Server\Manager;
use Annotation\Inject;
use Server\Abstracts\Server;
use Server\Constant;
use Exception;
use Server\Events\OnAfterRequest;
use Server\SInterface\PipeMessage;
use Snowflake\Events\EventDispatch;
/**
*
*/
class OnPipeMessage extends Server
{
/** @var EventDispatch */
#[Inject(EventDispatch::class)]
public EventDispatch $eventDispatch;
/**
* @param \Swoole\Server $server
* @param int $src_worker_id
* @param mixed $message
* @throws Exception
*/
public function onPipeMessage(\Swoole\Server $server, int $src_worker_id, mixed $message)
{
if (!is_object($message) || !($message instanceof PipeMessage)) {
return;
}
defer(fn() => $this->eventDispatch->dispatch(new OnAfterRequest()));
$this->runEvent(Constant::PIPE_MESSAGE,
function (\Swoole\Server $server, $src_worker_id, $message) {
call_user_func([$message, 'execute']);
}, [
$server, $src_worker_id, $message
]
);
}
}
@@ -14,18 +14,13 @@ use Snowflake\Exception\ConfigException;
/** /**
* Class ServerDefaultEvent * Class OnServerDefault
* @package Server\Manager * @package Server\Manager
*/ */
class ServerDefaultEvent extends Server class OnServerDefault extends Server
{ {
/** @var EventDispatch */
#[Inject(EventDispatch::class)]
public EventDispatch $eventDispatch;
/** /**
* @param \Swoole\Server $server * @param \Swoole\Server $server
* @throws ConfigException * @throws ConfigException
@@ -47,27 +42,6 @@ class ServerDefaultEvent extends Server
} }
/**
* @param \Swoole\Server $server
* @param int $src_worker_id
* @param mixed $message
* @throws Exception
*/
public function onPipeMessage(\Swoole\Server $server, int $src_worker_id, mixed $message)
{
if (!is_object($message) || !($message instanceof PipeMessage)) {
return;
}
defer(fn() => $this->eventDispatch->dispatch(new OnAfterRequest()));
$this->runEvent(Constant::PIPE_MESSAGE,
function (\Swoole\Server $server, $src_worker_id, $message) {
call_user_func([$message, 'execute']);
}, [
$server, $src_worker_id, $message
]
);
}
/** /**
* @param \Swoole\Server $server * @param \Swoole\Server $server
@@ -7,10 +7,10 @@ use Server\Constant;
/** /**
* Class ServerManager * Class OnServerManager
* @package Server\Manager * @package Server\Manager
*/ */
class ServerManager extends Server class OnServerManager extends Server
{ {
+3 -3
View File
@@ -7,7 +7,7 @@ use Exception;
use ReflectionException; use ReflectionException;
use Server\SInterface\CustomProcess; use Server\SInterface\CustomProcess;
use Server\SInterface\TaskExecute; use Server\SInterface\TaskExecute;
use Server\Task\ServerTask; use Server\Task\OnServerTask;
use Snowflake\Abstracts\Config; use Snowflake\Abstracts\Config;
use Snowflake\Exception\ConfigException; use Snowflake\Exception\ConfigException;
use Snowflake\Exception\NotFindClassException; use Snowflake\Exception\NotFindClassException;
@@ -20,7 +20,7 @@ use Swoole\WebSocket\Server as WServer;
/** /**
* Class ServerManager * Class OnServerManager
* @package HttpServer\Service * @package HttpServer\Service
*/ */
class ServerManager extends Abstracts\Server class ServerManager extends Abstracts\Server
@@ -403,7 +403,7 @@ class ServerManager extends Abstracts\Server
private function addTaskListener(array $events = []): void private function addTaskListener(array $events = []): void
{ {
$task_use_object = $this->server->setting['task_object'] ?? $this->server->setting['task_use_object'] ?? false; $task_use_object = $this->server->setting['task_object'] ?? $this->server->setting['task_use_object'] ?? false;
$reflect = Snowflake::getDi()->getReflect(ServerTask::class)?->newInstance(); $reflect = Snowflake::getDi()->getReflect(OnServerTask::class)?->newInstance();
if ($task_use_object || $this->server->setting['task_enable_coroutine']) { if ($task_use_object || $this->server->setting['task_enable_coroutine']) {
$this->server->on('task', $events[Constant::TASK] ?? [$reflect, 'onCoroutineTask']); $this->server->on('task', $events[Constant::TASK] ?? [$reflect, 'onCoroutineTask']);
} else { } else {
@@ -12,10 +12,10 @@ use Swoole\Server;
/** /**
* Class ServerTask * Class OnServerTask
* @package Server\Task * @package Server\Task
*/ */
class ServerTask class OnServerTask
{ {
@@ -23,10 +23,10 @@ use Swoole\Timer;
/** /**
* Class ServerWorker * Class OnServerWorker
* @package Server\Worker * @package Server\Worker
*/ */
class ServerWorker extends \Server\Abstracts\Server class OnServerWorker extends \Server\Abstracts\Server
{ {
+14 -14
View File
@@ -3,12 +3,12 @@
use Server\Constant; use Server\Constant;
use Server\HTTPServerListener; use Server\HTTPServerListener;
use Server\Manager\ServerDefaultEvent; use Server\Manager\OnServerDefault;
use Server\Manager\ServerManager; use Server\Manager\OnServerManager;
use Server\TCPServerListener; use Server\TCPServerListener;
use Server\UDPServerListener; use Server\UDPServerListener;
use Server\WebSocketServerListener; use Server\WebSocketServerListener;
use Server\Worker\ServerWorker; use Server\Worker\OnServerWorker;
return [ return [
'server' => [ 'server' => [
@@ -33,17 +33,17 @@ return [
'tcp_defer_accept' => 1 'tcp_defer_accept' => 1
], ],
'events' => [ 'events' => [
Constant::PIPE_MESSAGE => [ServerDefaultEvent::class, 'onPipeMessage'], Constant::PIPE_MESSAGE => [OnServerDefault::class, 'onPipeMessage'],
Constant::SHUTDOWN => [ServerDefaultEvent::class, 'onShutdown'], Constant::SHUTDOWN => [OnServerDefault::class, 'onShutdown'],
Constant::WORKER_START => [ServerWorker::class, 'onWorkerStart'], Constant::WORKER_START => [OnServerWorker::class, 'onWorkerStart'],
Constant::WORKER_ERROR => [ServerWorker::class, 'onWorkerError'], Constant::WORKER_ERROR => [OnServerWorker::class, 'onWorkerError'],
Constant::WORKER_EXIT => [ServerWorker::class, 'onWorkerExit'], Constant::WORKER_EXIT => [OnServerWorker::class, 'onWorkerExit'],
Constant::WORKER_STOP => [ServerWorker::class, 'onWorkerStop'], Constant::WORKER_STOP => [OnServerWorker::class, 'onWorkerStop'],
Constant::MANAGER_START => [ServerManager::class, 'onManagerStart'], Constant::MANAGER_START => [OnServerManager::class, 'onManagerStart'],
Constant::MANAGER_STOP => [ServerManager::class, 'onManagerStop'], Constant::MANAGER_STOP => [OnServerManager::class, 'onManagerStop'],
Constant::BEFORE_RELOAD => [ServerDefaultEvent::class, 'onBeforeReload'], Constant::BEFORE_RELOAD => [OnServerDefault::class, 'onBeforeReload'],
Constant::AFTER_RELOAD => [ServerDefaultEvent::class, 'onAfterReload'], Constant::AFTER_RELOAD => [OnServerDefault::class, 'onAfterReload'],
Constant::START => [ServerDefaultEvent::class, 'onStart'], Constant::START => [OnServerDefault::class, 'onStart'],
], ],
'ports' => [ 'ports' => [
[ [