diff --git a/wip/app/app2.php b/wip/app/app2.php index d3f7cc0..fc667f9 100644 --- a/wip/app/app2.php +++ b/wip/app/app2.php @@ -14,60 +14,6 @@ use nur\sery\wip\app\cli\Application; #XXX une réécriture de app, qui remplacera app à terme class app2 { - static ?func $bgapplication_enabled = null; - - /** - * spécifier la fonction permettant de vérifier si l'exécution de tâches - * de fond est autorisée. Si cette méthode n'est pas utilisée, par défaut, - * les tâches planifiées sont autorisées - * - * si $func===true, spécifier une fonction qui retourne toujours vrai - * si $func===false, spécifiée une fonction qui retourne toujours faux - * sinon, $func doit être une fonction valide - */ - static function set_bgapplication_enabled($func): void { - if (is_bool($func)) { - $enabled = $func; - $func = function () use ($enabled) { - return $enabled; - }; - } - self::$bgapplication_enabled = func::with($func); - } - - /** - * Si les exécutions en tâche de fond sont autorisée, retourner. Sinon - * afficher une erreur et quitter l'application - */ - static function check_bgapplication_enabled(bool $forceEnabled=false): void { - if (self::$bgapplication_enabled === null) return; - $enabled = boolval(self::$bgapplication_enabled->invoke()); - if (!$forceEnabled && !$enabled) { - msg::debug("Planifications désactivées. La tâche n'a pas été lancée"); - throw new ExitError(); - } - } - - static bool $dispach_signals = false; - - static function install_signal_handler(bool $allow=true): void { - if (!$allow) return; - $signalHandler = function(int $signo, $siginfo) { - throw new ExitError(255); - }; - pcntl_signal(SIGHUP, $signalHandler); - pcntl_signal(SIGINT, $signalHandler); - pcntl_signal(SIGQUIT, $signalHandler); - pcntl_signal(SIGTERM, $signalHandler); - self::$dispach_signals = true; - } - - static function _dispatch_signals() { - if (self::$dispach_signals) pcntl_signal_dispatch(); - } - - ############################################################################# - private static function isa_Application($app): bool { if (!is_string($app)) return false; return $app === Application::class || is_subclass_of($app, Application::class); @@ -527,4 +473,60 @@ class app2 { $this->lockFiles[$name] ??= $this->getRunfile()->getLockFile($name, $this->title); return $this->lockFiles[$name]; } + + ############################################################################# + + static bool $dispach_signals = false; + + static function install_signal_handler(bool $allow=true): void { + if (!$allow) return; + $signalHandler = function(int $signo, $siginfo) { + throw new ExitError(255); + }; + pcntl_signal(SIGHUP, $signalHandler); + pcntl_signal(SIGINT, $signalHandler); + pcntl_signal(SIGQUIT, $signalHandler); + pcntl_signal(SIGTERM, $signalHandler); + self::$dispach_signals = true; + } + + static function _dispatch_signals() { + if (self::$dispach_signals) pcntl_signal_dispatch(); + } + + ############################################################################# + + static ?func $bgapplication_enabled = null; + + /** + * spécifier la fonction permettant de vérifier si l'exécution de tâches + * de fond est autorisée. Si cette méthode n'est pas utilisée, par défaut, + * les tâches planifiées sont autorisées + * + * si $func===true, spécifier une fonction qui retourne toujours vrai + * si $func===false, spécifiée une fonction qui retourne toujours faux + * sinon, $func doit être une fonction valide + */ + static function set_bgapplication_enabled($func): void { + if (is_bool($func)) { + $enabled = $func; + $func = function () use ($enabled) { + return $enabled; + }; + } + self::$bgapplication_enabled = func::with($func); + } + + /** + * Si les exécutions en tâche de fond sont autorisée, retourner. Sinon + * afficher une erreur et quitter l'application + */ + static function check_bgapplication_enabled(bool $forceEnabled=false): void { + if (self::$bgapplication_enabled === null) return; + $enabled = boolval(self::$bgapplication_enabled->invoke()); + if (!$forceEnabled && !$enabled) { + msg::debug("Planifications désactivées. La tâche n'a pas été lancée"); + throw new ExitError(); + } + } }