39 lines
1.3 KiB
PHP
39 lines
1.3 KiB
PHP
<?php
|
|
|
|
namespace App\Classes\Sock\Exception;
|
|
|
|
// @todo Can we change this to use socket_strerr() && socket_last_error()
|
|
final class SocketException extends \Exception {
|
|
public const CANT_CREATE_SOCKET = 1;
|
|
public const CANT_BIND_SOCKET = 2;
|
|
public const CANT_LISTEN = 3;
|
|
public const CANT_ACCEPT = 4;
|
|
public const CANT_CONNECT = 5;
|
|
public const SOCKET_ERROR = 6;
|
|
public const SOCKET_EAGAIN = 11;
|
|
public const SOCKET_TIMEOUT = 15;
|
|
public const SOCKET_READ = 22;
|
|
public const CONNECTION_RESET = 104;
|
|
|
|
private array $messages = [
|
|
self::CANT_CREATE_SOCKET => 'Can\'t create socket: "%s"',
|
|
self::CANT_BIND_SOCKET => 'Can\'t bind socket: "%s"',
|
|
self::CANT_LISTEN => 'Can\'t listen: "%s"',
|
|
self::CANT_ACCEPT => 'Can\'t accept connections: "%s"',
|
|
self::CANT_CONNECT => 'Can\'t connect: "%s"',
|
|
self::SOCKET_ERROR => 'Socket Error: "%s"',
|
|
self::SOCKET_EAGAIN => 'Socket Resource Temporarily Unavailable - Try again',
|
|
self::SOCKET_TIMEOUT => 'Timeout reached "%d"',
|
|
self::SOCKET_READ => 'Unable to read from socket',
|
|
self::CONNECTION_RESET => 'Connection reset by peer',
|
|
];
|
|
|
|
public function __construct(int $code,string $params=NULL) {
|
|
$message = $params
|
|
? call_user_func_array('sprintf',[$this->messages[$code],$params])
|
|
: $this->messages[$code];
|
|
|
|
parent::__construct($message,$code);
|
|
}
|
|
}
|