<?php
/**
* * * * * * * *<4297088@qq.com>
* */
namespace cn\gz53\framework\application;
use cn\gz53\framework\core\Context;
use cn\gz53\framework\service\http\HttpRequestService;
use cn\gz53\framework\service\system\CoreService;
use cn\gz53\framework\service\system\EnvCheckService;
use cn\gz53\framework\service\system\LogService;
use cn\gz53\framework\service\system\RunnerService;
use cn\gz53\framework\service\server\WebSocketServerService;
use cn\gz53\framework\service\server\WebSocketServerWorkerService;
class WebSocketServerApplication
{
private $context;
private $rootPath;
public static function start($root_path){
(new self())->run($root_path);
}
public function run($rootPath){
$this->setPath($rootPath);
$this->context();
$this->check();
$this->load();
$this->set();
$this->init();
$this->loop();
}
private function setPath($path){
$this->rootPath = $path;
}
private function context(){
$this->context = Context::instance();
}
private function check(){
$envCheckService = EnvCheckService::getInstance($this->context);
$envCheckService->checkRootPath($this->rootPath);
$envCheckService->checkAppPaths();
$envCheckService->checkDeploy();
}
private function load(){
$webSocketServerService = WebSocketServerService::getInstance($this->context);
$logService = LogService::getInstance($this->context);
$logService->loadConfig();
$webSocketServerService->loadConfig();
}
private function set(){
$webSocketServerService = WebSocketServerService::getInstance($this->context);
$webSocketServerWorkerService = WebSocketServerWorkerService::getInstance($this->context);
$httpRequestService = HttpRequestService::getInstance($this->context);
$runnerService = RunnerService::getInstance($this->context);
$coreService = CoreService::getInstance($this->context);
$logService = LogService::getInstance($this->context);
$httpRequestService->setConfig();
$coreService->setCallback();
$logService->setCallback();
$runnerService->setPath();
$runnerService->setLoad();
$httpRequestService->setRunner();
$webSocketServerWorkerService->setInit();
$webSocketServerService->setConfig();
$webSocketServerService->setMessage();
$webSocketServerService->setWorker();
}
private function init(){
$webSocketServerService = WebSocketServerService::getInstance($this->context);
$webSocketServerService->init();
}
private function loop(){
$webSocketServerService = WebSocketServerService::getInstance($this->context);
$webSocketServerService->loop();
}
}