/** * Creates an event loop which takes orders from the parent process and executes * them in runtime mode. * * @return void */ public function handleRequest() { $sequence = $this->bootstrap->buildRuntimeSequence(); $sequence->invoke($this->bootstrap); $objectManager = $this->bootstrap->getObjectManager(); $systemLogger = $objectManager->get(SystemLoggerInterface::class); $systemLogger->log('Running sub process loop.', LOG_DEBUG); echo "\nREADY\n"; try { while (true) { $commandLine = trim(fgets(STDIN)); $trimmedCommandLine = trim($commandLine); $systemLogger->log(sprintf('Received command "%s".', $trimmedCommandLine), LOG_INFO); if ($commandLine === "QUIT\n") { break; } /** @var Request $request */ $request = $objectManager->get(RequestBuilder::class)->build($trimmedCommandLine); $response = new Response(); if ($this->bootstrap->isCompiletimeCommand($request->getCommand()->getCommandIdentifier())) { echo "This command must be executed during compiletime.\n"; } else { $objectManager->get(Dispatcher::class)->dispatch($request, $response); $response->send(); $this->emitDispatchedCommandLineSlaveRequest(); } echo "\nREADY\n"; } $systemLogger->log('Exiting sub process loop.', LOG_DEBUG); $this->bootstrap->shutdown(Bootstrap::RUNLEVEL_RUNTIME); exit($response->getExitCode()); } catch (\Exception $exception) { $this->handleException($exception); } }
/** * Initializes the matching boot sequence depending on the type of the command * (RUNLEVEL_RUNTIME or RUNLEVEL_COMPILETIME) and manually injects the necessary dependencies of * this request handler. * * @param string $runlevel one of the Bootstrap::RUNLEVEL_* constants * @return void */ protected function boot($runlevel) { $sequence = $runlevel === Bootstrap::RUNLEVEL_COMPILETIME ? $this->bootstrap->buildCompiletimeSequence() : $this->bootstrap->buildRuntimeSequence(); $sequence->invoke($this->bootstrap); $this->objectManager = $this->bootstrap->getObjectManager(); $this->dispatcher = $this->objectManager->get(Dispatcher::class); }
/** * Handles a command line request * * @return void */ public function handleRequest() { $sequence = $this->bootstrap->buildRuntimeSequence(); $sequence->invoke($this->bootstrap); }
/** * Boots up Flow to runtime * * @return void */ protected function boot() { $sequence = $this->bootstrap->buildRuntimeSequence(); $sequence->invoke($this->bootstrap); }