Throw exception when RakLib crashes

This commit is contained in:
Shoghi Cervantes 2015-01-13 18:44:15 +01:00
parent e8e7938490
commit 9fac990b19
No known key found for this signature in database
GPG Key ID: 78464DB0A7837F89

View File

@ -89,7 +89,12 @@ class RakLibInterface implements ServerInstance, SourceInterface{
/** @var \SplFixedArray */ /** @var \SplFixedArray */
private $packetPool; private $packetPool;
/** @var Server */
private $server; private $server;
/** @var RakLibServer */
private $rakLib;
/** @var Player[] */ /** @var Player[] */
private $players = []; private $players = [];
@ -118,13 +123,19 @@ class RakLibInterface implements ServerInstance, SourceInterface{
$this->internalThreaded = new \Threaded(); $this->internalThreaded = new \Threaded();
$this->externalThreaded = new \Threaded(); $this->externalThreaded = new \Threaded();
$server = new RakLibServer($this->internalThreaded, $this->externalThreaded, $this->server->getLogger(), $this->server->getLoader(), $this->server->getPort(), $this->server->getIp() === "" ? "0.0.0.0" : $this->server->getIp()); $this->rakLib = new RakLibServer($this->internalThreaded, $this->externalThreaded, $this->server->getLogger(), $this->server->getLoader(), $this->server->getPort(), $this->server->getIp() === "" ? "0.0.0.0" : $this->server->getIp());
$this->interface = new ServerHandler($server, $this); $this->interface = new ServerHandler($this->rakLib, $this);
$this->setName($this->server->getMotd()); $this->setName($this->server->getMotd());
} }
public function doTick(){ public function doTick(){
$this->interface->sendTick(); if(!$this->rakLib->isTerminated()){
$this->interface->sendTick();
}else{
$info = $this->rakLib->getTerminationInfo();
$this->server->removeInterface($this);
\ExceptionHandler::handler(E_ERROR, "RakLib Thread crashed [".$info["scope"]."]" . (isset($info["message"]) ? $info["message"] : ""), $info["file"], $info["line"]);
}
} }
public function process(){ public function process(){