error_reporting(E_ALL);
// TODO: Придумать, где брать путь
$logs_dir = __DIR__ . '/../../../../temp/logs/network/';
try {
    $daemon = new Daemon($logs_dir);
    $pid = $daemon->run();
    // TODO: Добавить периодическую проверку pid-файла на всякий случай.
} catch (Exception $e) {
    exit($e->getMessage());
}
$local = new Local();
$events_dir = $local->get_events_dir();
if (!is_dir($events_dir)) {
    mkdir($events_dir, 0777, true);
}
$local->save_daemon_pid($pid);
$local->log('info', 'Daemon started with pid "' . $pid . '"', 'fast');
$conn_data = $local->get_connection_data();
// TODO: Реакция на отключение сервера.
$elephant = new ElephantIO\Client($conn_data['url'], 'socket.io', 2, true, true, $local->is_debug(), $conn_data['namespace'], '127.0.0.1', 10000, 'file', $events_dir);
$elephant->setLogger($local);
$elephant->setLicence($conn_data['key'], $conn_data['domain']);
foreach ($local->get_events() as $event) {
    $elephant->on($event, function ($data) use($event, $local) {
        $local->log('info', 'Event received: ' . $event . '(' . serialize($data) . ')', 'fast');
        $local->handle($event, $data);
    });
}
pcntl_signal(15, array($elephant, 'close'));
$elephant->init(true, true, true, 10000);