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