Просмотр файла vendor/symfony/process/Exception/ProcessTimedOutException.php

Размер файла: 1.62Kb
  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 $this->timeoutType === self::TYPE_GENERAL;
  49. }
  50.  
  51. public function isIdleTimeout()
  52. {
  53. return $this->timeoutType === self::TYPE_IDLE;
  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. }