Subversion-Projekte lars-tiefland.laravel_shop

Revision

Details | Letzte Änderung | Log anzeigen | RSS feed

Revision Autor Zeilennr. Zeile
148 lars 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
    public const TYPE_GENERAL = 1;
24
    public const TYPE_IDLE = 2;
25
 
26
    private $process;
27
    private $timeoutType;
28
 
29
    public function __construct(Process $process, int $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
        return match ($this->timeoutType) {
59
            self::TYPE_GENERAL => $this->process->getTimeout(),
60
            self::TYPE_IDLE => $this->process->getIdleTimeout(),
61
            default => throw new \LogicException(sprintf('Unknown timeout type "%d".', $this->timeoutType)),
62
        };
63
    }
64
}