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;
/**
* Class ServerDefaultEvent
* Class OnServerDefault
* @package Snowflake\Snowflake\Server
*/
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
*/
class ServerDefaultEvent extends Server
class OnServerDefault extends Server
{
/** @var EventDispatch */
#[Inject(EventDispatch::class)]
public EventDispatch $eventDispatch;
/**
* @param \Swoole\Server $server
* @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
@@ -7,10 +7,10 @@ use Server\Constant;
/**
* Class ServerManager
* Class OnServerManager
* @package Server\Manager
*/
class ServerManager extends Server
class OnServerManager extends Server
{
+3 -3
View File
@@ -7,7 +7,7 @@ use Exception;
use ReflectionException;
use Server\SInterface\CustomProcess;
use Server\SInterface\TaskExecute;
use Server\Task\ServerTask;
use Server\Task\OnServerTask;
use Snowflake\Abstracts\Config;
use Snowflake\Exception\ConfigException;
use Snowflake\Exception\NotFindClassException;
@@ -20,7 +20,7 @@ use Swoole\WebSocket\Server as WServer;
/**
* Class ServerManager
* Class OnServerManager
* @package HttpServer\Service
*/
class ServerManager extends Abstracts\Server
@@ -403,7 +403,7 @@ class ServerManager extends Abstracts\Server
private function addTaskListener(array $events = []): void
{
$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']) {
$this->server->on('task', $events[Constant::TASK] ?? [$reflect, 'onCoroutineTask']);
} else {
@@ -12,10 +12,10 @@ use Swoole\Server;
/**
* Class ServerTask
* Class OnServerTask
* @package Server\Task
*/
class ServerTask
class OnServerTask
{
@@ -23,10 +23,10 @@ use Swoole\Timer;
/**
* Class ServerWorker
* Class OnServerWorker
* @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\HTTPServerListener;
use Server\Manager\ServerDefaultEvent;
use Server\Manager\ServerManager;
use Server\Manager\OnServerDefault;
use Server\Manager\OnServerManager;
use Server\TCPServerListener;
use Server\UDPServerListener;
use Server\WebSocketServerListener;
use Server\Worker\ServerWorker;
use Server\Worker\OnServerWorker;
return [
'server' => [
@@ -33,17 +33,17 @@ return [
'tcp_defer_accept' => 1
],
'events' => [
Constant::PIPE_MESSAGE => [ServerDefaultEvent::class, 'onPipeMessage'],
Constant::SHUTDOWN => [ServerDefaultEvent::class, 'onShutdown'],
Constant::WORKER_START => [ServerWorker::class, 'onWorkerStart'],
Constant::WORKER_ERROR => [ServerWorker::class, 'onWorkerError'],
Constant::WORKER_EXIT => [ServerWorker::class, 'onWorkerExit'],
Constant::WORKER_STOP => [ServerWorker::class, 'onWorkerStop'],
Constant::MANAGER_START => [ServerManager::class, 'onManagerStart'],
Constant::MANAGER_STOP => [ServerManager::class, 'onManagerStop'],
Constant::BEFORE_RELOAD => [ServerDefaultEvent::class, 'onBeforeReload'],
Constant::AFTER_RELOAD => [ServerDefaultEvent::class, 'onAfterReload'],
Constant::START => [ServerDefaultEvent::class, 'onStart'],
Constant::PIPE_MESSAGE => [OnServerDefault::class, 'onPipeMessage'],
Constant::SHUTDOWN => [OnServerDefault::class, 'onShutdown'],
Constant::WORKER_START => [OnServerWorker::class, 'onWorkerStart'],
Constant::WORKER_ERROR => [OnServerWorker::class, 'onWorkerError'],
Constant::WORKER_EXIT => [OnServerWorker::class, 'onWorkerExit'],
Constant::WORKER_STOP => [OnServerWorker::class, 'onWorkerStop'],
Constant::MANAGER_START => [OnServerManager::class, 'onManagerStart'],
Constant::MANAGER_STOP => [OnServerManager::class, 'onManagerStop'],
Constant::BEFORE_RELOAD => [OnServerDefault::class, 'onBeforeReload'],
Constant::AFTER_RELOAD => [OnServerDefault::class, 'onAfterReload'],
Constant::START => [OnServerDefault::class, 'onStart'],
],
'ports' => [
[