This commit is contained in:
2021-08-03 10:30:26 +08:00
parent 501c259580
commit 5059a87784
5 changed files with 13 additions and 25 deletions
-1
View File
@@ -155,7 +155,6 @@ class Loader extends BaseObject
* @param string $namespace * @param string $namespace
* @return ReflectionClass|null * @return ReflectionClass|null
* @throws ReflectionException * @throws ReflectionException
* @throws NotFindClassException
*/ */
private function getReflect(DirectoryIterator $path, string $namespace): ?ReflectionClass private function getReflect(DirectoryIterator $path, string $namespace): ?ReflectionClass
{ {
+11 -4
View File
@@ -6,6 +6,7 @@ namespace Server;
use JetBrains\PhpStorm\Pure; use JetBrains\PhpStorm\Pure;
use Swoole\Coroutine\Channel; use Swoole\Coroutine\Channel;
use const Grpc\CHANNEL_SHUTDOWN;
class ApplicationStore class ApplicationStore
{ {
@@ -22,7 +23,7 @@ class ApplicationStore
*/ */
private function __construct() private function __construct()
{ {
$this->lock = new Channel(99999); $this->lock = new Channel(1);
} }
@@ -41,9 +42,8 @@ class ApplicationStore
/** /**
* @return $this * @return $this
*/ */
public function add(): static public function instance(): static
{ {
$this->lock->push(1);
return $this; return $this;
} }
@@ -53,13 +53,20 @@ class ApplicationStore
*/ */
public function waite(): void public function waite(): void
{ {
if ($this->lock->isEmpty()) { if ($this->lock->errCode == SWOOLE_CHANNEL_CLOSED) {
return; return;
} }
$this->lock->pop(-1); $this->lock->pop(-1);
} }
public function close()
{
$this->lock->push(1);
$this->lock->close();
}
/** /**
* *
*/ */
-2
View File
@@ -52,7 +52,6 @@ class HTTPServerListener extends Abstracts\Server
* @param int $mode * @param int $mode
* @param array|null $settings * @param array|null $settings
* @return Server\Port * @return Server\Port
* @throws NotFindClassException
* @throws ReflectionException * @throws ReflectionException
* @throws Exception * @throws Exception
*/ */
@@ -71,7 +70,6 @@ class HTTPServerListener extends Abstracts\Server
static::$_http->set(array_merge($settings['settings'] ?? [], ['enable_unsafe_event' => false])); static::$_http->set(array_merge($settings['settings'] ?? [], ['enable_unsafe_event' => false]));
static::$_http->on('request', [$reflect, 'onRequest']); static::$_http->on('request', [$reflect, 'onRequest']);
static::$_http->on('connect', [$reflect, 'onConnect']); static::$_http->on('connect', [$reflect, 'onConnect']);
static::$_http->on('disconnect', [$reflect, 'onDisconnect']);
static::$_http->on('close', [$reflect, 'onClose']); static::$_http->on('close', [$reflect, 'onClose']);
return static::$_http; return static::$_http;
} }
-16
View File
@@ -43,7 +43,6 @@ class TCPServerListener extends Abstracts\Server
/** @var static $reflect */ /** @var static $reflect */
$reflect = Snowflake::getDi()->getReflect(static::class)?->newInstance(); $reflect = Snowflake::getDi()->getReflect(static::class)?->newInstance();
$reflect->setEvents(Constant::DISCONNECT, $settings['events'][Constant::DISCONNECT] ?? null);
$reflect->setEvents(Constant::CLOSE, $settings['events'][Constant::CLOSE] ?? null); $reflect->setEvents(Constant::CLOSE, $settings['events'][Constant::CLOSE] ?? null);
$reflect->setEvents(Constant::RECEIVE, $settings['events'][Constant::RECEIVE] ?? null); $reflect->setEvents(Constant::RECEIVE, $settings['events'][Constant::RECEIVE] ?? null);
$reflect->setEvents(Constant::CONNECT, $settings['events'][Constant::CONNECT] ?? null); $reflect->setEvents(Constant::CONNECT, $settings['events'][Constant::CONNECT] ?? null);
@@ -56,25 +55,10 @@ class TCPServerListener extends Abstracts\Server
static::$_tcp->on('receive', [$reflect, 'onReceive']); static::$_tcp->on('receive', [$reflect, 'onReceive']);
static::$_tcp->on('connect', [$reflect, 'onConnect']); static::$_tcp->on('connect', [$reflect, 'onConnect']);
static::$_tcp->on('close', [$reflect, 'onClose']); static::$_tcp->on('close', [$reflect, 'onClose']);
static::$_tcp->on('disconnect', [$reflect, 'onDisconnect']);
return static::$_tcp; return static::$_tcp;
} }
/**
* @param Server $server
* @param int $fd
* @param int|null $reactor_id
* @throws Exception
*/
public function onDisconnect(Server $server, int $fd, ?int $reactor_id = null)
{
$this->runEvent(Constant::HANDSHAKE, null, [$server, $fd, $reactor_id]);
$this->_event->dispatch(Event::SYSTEM_RESOURCE_RELEASES);
}
/** /**
* @param Server $server * @param Server $server
* @param int $fd * @param int $fd
+2 -2
View File
@@ -35,7 +35,7 @@ class ServerWorker extends \Server\Abstracts\Server
{ {
$this->_setConfigCache($workerId); $this->_setConfigCache($workerId);
$store = ApplicationStore::getStore()->add(); $store = ApplicationStore::getStore()->instance();
$annotation = Snowflake::app()->getAnnotation(); $annotation = Snowflake::app()->getAnnotation();
$annotation->read(APP_PATH . 'app'); $annotation->read(APP_PATH . 'app');
@@ -50,7 +50,7 @@ class ServerWorker extends \Server\Abstracts\Server
$this->workerInitExecutor($server, $annotation, $workerId); $this->workerInitExecutor($server, $annotation, $workerId);
$this->interpretDirectory($annotation); $this->interpretDirectory($annotation);
$store->done(); $store->close();
} }