Chris@0
|
1 <?php
|
Chris@0
|
2
|
Chris@0
|
3 /*
|
Chris@0
|
4 * This file is part of the Symfony package.
|
Chris@0
|
5 *
|
Chris@0
|
6 * (c) Fabien Potencier <fabien@symfony.com>
|
Chris@0
|
7 *
|
Chris@0
|
8 * For the full copyright and license information, please view the LICENSE
|
Chris@0
|
9 * file that was distributed with this source code.
|
Chris@0
|
10 */
|
Chris@0
|
11
|
Chris@0
|
12 namespace Symfony\Component\Process\Exception;
|
Chris@0
|
13
|
Chris@0
|
14 use Symfony\Component\Process\Process;
|
Chris@0
|
15
|
Chris@0
|
16 /**
|
Chris@0
|
17 * Exception that is thrown when a process times out.
|
Chris@0
|
18 *
|
Chris@0
|
19 * @author Johannes M. Schmitt <schmittjoh@gmail.com>
|
Chris@0
|
20 */
|
Chris@0
|
21 class ProcessTimedOutException extends RuntimeException
|
Chris@0
|
22 {
|
Chris@0
|
23 const TYPE_GENERAL = 1;
|
Chris@0
|
24 const TYPE_IDLE = 2;
|
Chris@0
|
25
|
Chris@0
|
26 private $process;
|
Chris@0
|
27 private $timeoutType;
|
Chris@0
|
28
|
Chris@0
|
29 public function __construct(Process $process, $timeoutType)
|
Chris@0
|
30 {
|
Chris@0
|
31 $this->process = $process;
|
Chris@0
|
32 $this->timeoutType = $timeoutType;
|
Chris@0
|
33
|
Chris@0
|
34 parent::__construct(sprintf(
|
Chris@0
|
35 'The process "%s" exceeded the timeout of %s seconds.',
|
Chris@0
|
36 $process->getCommandLine(),
|
Chris@0
|
37 $this->getExceededTimeout()
|
Chris@0
|
38 ));
|
Chris@0
|
39 }
|
Chris@0
|
40
|
Chris@0
|
41 public function getProcess()
|
Chris@0
|
42 {
|
Chris@0
|
43 return $this->process;
|
Chris@0
|
44 }
|
Chris@0
|
45
|
Chris@0
|
46 public function isGeneralTimeout()
|
Chris@0
|
47 {
|
Chris@14
|
48 return self::TYPE_GENERAL === $this->timeoutType;
|
Chris@0
|
49 }
|
Chris@0
|
50
|
Chris@0
|
51 public function isIdleTimeout()
|
Chris@0
|
52 {
|
Chris@14
|
53 return self::TYPE_IDLE === $this->timeoutType;
|
Chris@0
|
54 }
|
Chris@0
|
55
|
Chris@0
|
56 public function getExceededTimeout()
|
Chris@0
|
57 {
|
Chris@0
|
58 switch ($this->timeoutType) {
|
Chris@0
|
59 case self::TYPE_GENERAL:
|
Chris@0
|
60 return $this->process->getTimeout();
|
Chris@0
|
61
|
Chris@0
|
62 case self::TYPE_IDLE:
|
Chris@0
|
63 return $this->process->getIdleTimeout();
|
Chris@0
|
64
|
Chris@0
|
65 default:
|
Chris@0
|
66 throw new \LogicException(sprintf('Unknown timeout type "%d".', $this->timeoutType));
|
Chris@0
|
67 }
|
Chris@0
|
68 }
|
Chris@0
|
69 }
|