share(function (Application $app) { $logger = new $app['monolog.logger.class']('task-manager logger'); $logger->pushHandler(new NullHandler()); return $logger; }); $app['task-manager'] = $app->share(function (Application $app) { $options = $app['task-manager.listener.options']; $manager = TaskManager::create( $app['dispatcher'], $app['task-manager.logger'], $app['task-manager.task-list'], [ 'listener_protocol' => $options['protocol'], 'listener_host' => $options['host'], 'listener_port' => $options['port'], 'tick_period' => 1, ] ); $manager->addSubscriber($app['ws.task-manager.broadcaster']); return $manager; }); $app['task-manager.logger.configuration'] = $app->share(function (Application $app) { $conf = array_replace([ 'enabled' => true, 'level' => 'INFO', 'max-files' => 10, ], $app['conf']->get(['main', 'task-manager', 'logger'], [])); $conf['level'] = defined('Monolog\\Logger::'.$conf['level']) ? constant('Monolog\\Logger::'.$conf['level']) : Logger::INFO; return $conf; }); $app['task-manager.task-list'] = $app->share(function (Application $app) { $conf = $app['conf']->get(['registry', 'executables', 'php-conf-path']); $finder = new PhpExecutableFinder(); $php = $finder->find(); return new TaskList($app['EM']->getRepository('Phraseanet:Task'), $app['root.path'], $php, $conf); }); } public function boot(Application $app) { } }