AzuraCast/src/Exception/SupervisorException.php

81 lines
2.4 KiB
PHP

<?php
declare(strict_types=1);
namespace App\Exception;
use App\Exception;
use App\Exception\Supervisor\AlreadyRunningException;
use App\Exception\Supervisor\BadNameException;
use App\Exception\Supervisor\NotRunningException;
use Supervisor\Exception\Fault\AlreadyStartedException;
use Supervisor\Exception\Fault\BadNameException as SupervisorBadNameException;
use Supervisor\Exception\Fault\NotRunningException as SupervisorNotRunningException;
use Supervisor\Exception\SupervisorException as SupervisorLibException;
class SupervisorException extends Exception
{
public static function fromSupervisorLibException(
SupervisorLibException $e,
string $processName
): self {
if ($e instanceof SupervisorBadNameException) {
$headline = sprintf(
__('%s is not recognized as a service.'),
$processName
);
$body = __('It may not be registered with Supervisor yet. Restarting broadcasting may help.');
$eNew = new BadNameException(
$headline . '; ' . $body,
$e->getCode(),
$e
);
} elseif ($e instanceof AlreadyStartedException) {
$headline = sprintf(
__('%s cannot start'),
$processName
);
$body = __('It is already running.');
$eNew = new AlreadyRunningException(
$headline . '; ' . $body,
$e->getCode(),
$e
);
} elseif ($e instanceof SupervisorNotRunningException) {
$headline = sprintf(
__('%s cannot stop'),
$processName
);
$body = __('It is not running.');
$eNew = new NotRunningException(
$headline . '; ' . $body,
$e->getCode(),
$e
);
} else {
$classParts = explode('\\', $e::class);
$className = array_pop($classParts);
$headline = sprintf(
__('%s encountered an error: %s'),
$processName,
$className
);
$body = __('Check the log for details.');
$eNew = new self(
$headline,
$e->getCode(),
$e
);
}
$eNew->setFormattedMessage('<b>' . $headline . '</b><br>' . $body);
return $eNew;
}
}