Initial commit
This commit is contained in:
48
src/Daemon.php
Normal file
48
src/Daemon.php
Normal file
@ -0,0 +1,48 @@
|
||||
<?php
|
||||
|
||||
namespace NoccyLabs\Mercureact;
|
||||
|
||||
use NoccyLabs\Mercureact\Http\Server;
|
||||
use React\EventLoop\Loop;
|
||||
use React\EventLoop\LoopInterface;
|
||||
use React\Socket\SocketServer;
|
||||
|
||||
class Daemon
|
||||
{
|
||||
private Configuration $config;
|
||||
|
||||
private LoopInterface $loop;
|
||||
|
||||
private Server $server;
|
||||
|
||||
public function __construct(Configuration $config, ?LoopInterface $loop=null)
|
||||
{
|
||||
$this->config = $config;
|
||||
$this->loop = $loop??Loop::get();
|
||||
}
|
||||
|
||||
public function start(): void
|
||||
{
|
||||
$this->server = new Server($this->config, []);
|
||||
|
||||
$socket = new SocketServer("tcp://0.0.0.0:9000");
|
||||
$this->server->listen($socket);
|
||||
}
|
||||
|
||||
public function stop(): void
|
||||
{
|
||||
$this->loop->stop();
|
||||
}
|
||||
|
||||
public function abort(int $exitcode, ?string $message=null): void
|
||||
{
|
||||
$bt = debug_backtrace(limit:2);
|
||||
$bt = end($bt);
|
||||
fprintf(STDERR, "Abort: %s\n at %s:%d\n in %s\n", $message??"Unknown reason", $bt['file'], $bt['line'], ($bt['class']??null).($bt['type']??null).$bt['function']);
|
||||
$this->loop->stop();
|
||||
register_shutdown_function(function () use ($exitcode) {
|
||||
exit($exitcode);
|
||||
});
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user