From 3ad2578dc223f97de06547be49d66e7adfea677c Mon Sep 17 00:00:00 2001 From: =?utf8?q?Roland=20H=C3=A4der?= Date: Thu, 26 Dec 2024 06:41:03 +0100 Subject: [PATCH] Continued: - starting with PHP 8, sockets are now no longer a scalar resource type, but a Socket class --- .../classes/client/http/class_HttpClient.php | 7 ++++--- .../factories/client/class_ClientFactory.php | 9 ++++++--- .../tools/console/class_ConsoleTools.php | 8 +++----- .../socket/class_InvalidSocketException.php | 20 ++++++++++++------- 4 files changed, 26 insertions(+), 18 deletions(-) diff --git a/framework/main/classes/client/http/class_HttpClient.php b/framework/main/classes/client/http/class_HttpClient.php index fc955eda..4864ef6d 100644 --- a/framework/main/classes/client/http/class_HttpClient.php +++ b/framework/main/classes/client/http/class_HttpClient.php @@ -10,6 +10,7 @@ use Org\Mxchange\CoreFramework\Generic\FrameworkInterface; // Import SPL stuff use \InvalidArgumentException; +use \Socket; use \UnexpectedValueException; /** @@ -55,10 +56,10 @@ class HttpClient extends BaseClient implements Client { /** * Creates an instance of this Client class and prepares it for usage * - * @param $socketResource Resource of a socket (optional) - * @return $clientInstance An instance of a Client class + * @param $socketResource An instance of a Socket class + * @return $clientInstance An instance of a HttpClient class */ - public final static function createHttpClient ($socketResouce = FALSE) { + public final static function createHttpClient (Socket $socketResouce = NULL) { // Get a new instance /* NOISY-DEBUG: */ self::createDebugInstance(__CLASS__, __LINE__)->debugOutput(sprintf('HTTP-CLIENT: socketResource[%s]=%s - CALLED!', gettype($socketResource), $socketResource)); $clientInstance = new HttpClient(); diff --git a/framework/main/classes/factories/client/class_ClientFactory.php b/framework/main/classes/factories/client/class_ClientFactory.php index 3b182f8f..3b0e3fd4 100644 --- a/framework/main/classes/factories/client/class_ClientFactory.php +++ b/framework/main/classes/factories/client/class_ClientFactory.php @@ -6,6 +6,9 @@ namespace Org\Mxchange\CoreFramework\Factory\Client; use Org\Mxchange\CoreFramework\Factory\BaseFactory; use Org\Mxchange\CoreFramework\Factory\Object\ObjectFactory; +// Import SPL +use \Socket; + /** * An object factory for clients * @@ -44,10 +47,10 @@ class ClientFactory extends BaseFactory { * registry pattern to cache those instances. * * @param $protocolInstance An instance of a HandleableProtocol class to create a client object for (e.g. 'http' for a HTTP/1.1 client) - * @param $socketResource A valid socket resource (optional) + * @param $socketResource An instance of a Socket class (optional) * @return $clientInstance An instance of the requested client */ - public static final function createClientByProtocolInstance (HandleableProtocol $protocolInstance, $socketResource = FALSE) { + public static final function createClientByProtocolInstance (HandleableProtocol $protocolInstance, Socket $socketResource = NULL) { // Default is NULL (to initialize variable) $clientInstance = NULL; @@ -63,7 +66,7 @@ class ClientFactory extends BaseFactory { $clientInstance->setSocketResource($socketResource); } else { // Generate object instance - $clientInstance = ObjectFactory::createObjectByConfiguredName($registryKey, array($socketResource)); + $clientInstance = ObjectFactory::createObjectByConfiguredName($registryKey, [$socketResource]); // Set it in registry for later re-use ObjectRegistry::getRegistry('factory')->addInstance($registryKey, $clientInstance); diff --git a/framework/main/classes/tools/console/class_ConsoleTools.php b/framework/main/classes/tools/console/class_ConsoleTools.php index 0051dfcc..ab958a53 100644 --- a/framework/main/classes/tools/console/class_ConsoleTools.php +++ b/framework/main/classes/tools/console/class_ConsoleTools.php @@ -13,6 +13,7 @@ use Org\Mxchange\CoreFramework\Socket\InvalidSocketException; // Import SPL stuff use \InvalidArgumentException; +use \Socket; use \SplFileInfo; use \UnexpectedValueException; @@ -95,11 +96,11 @@ class ConsoleTools extends BaseFrameworkSystem { * * @param $host Host to connect to * @param $port Port number to connect to - * @param $socketResource Resource of a socket + * @param $socketResource An instance of a Socket class * @return $response Response array * @throws InvalidArgumentException If a parameter is not valid */ - protected function setupProxyTunnel (string $host, int $port, $socketResource) { + protected function setupProxyTunnel (string $host, int $port, Socket $socketResource) { // Validate parameter //* NOISY-DEBUG */ self::createDebugInstance(__CLASS__, __LINE__)->traceMessage(sprintf('CONSOLE-TOOLS: host=%s,port=%d,socketResource=%s - CALLED!', $host, $port, $socketResource)); if (empty($host)) { @@ -108,9 +109,6 @@ class ConsoleTools extends BaseFrameworkSystem { } elseif ($port < 1) { // Throw IAE throw new InvalidArgumentException(sprintf('port=%d is not valid', $port)); - } elseif (!is_resource($socketResource)) { - // Throw IAE - throw new InvalidArgumentException(sprintf('socketResource[]=%s is not valid', gettype($socketResource))); } // Initialize array diff --git a/framework/main/exceptions/socket/class_InvalidSocketException.php b/framework/main/exceptions/socket/class_InvalidSocketException.php index 4d23fe9a..b2a98c33 100644 --- a/framework/main/exceptions/socket/class_InvalidSocketException.php +++ b/framework/main/exceptions/socket/class_InvalidSocketException.php @@ -35,13 +35,19 @@ class InvalidSocketException extends AbstractSocketException { */ public function __construct (array $messageData, int $code) { // Construct the message - $message = sprintf('[%s:] Invalid socketResource[%s]=%s, errno=%s, errstr=%s', - $messageData[0]->__toString(), - gettype($messageData[0]->getSocketResource()), - $messageData[0]->getSocketResource(), - $messageData[1], - $messageData[2] - ); + if (isset($messageData[1]) && isset($messageData[2])) { + $message = sprintf('[%s:] Invalid socketResource[]=%s, errno=%s, errstr=%s', + $messageData[0]->__toString(), + gettype($messageData[1]), + $messageData[1], + $messageData[2] + ); + } else { + $message = sprintf('[%s:] Invalid socketResource[]=%s with unknown error.', + $messageData[0]->__toString(), + gettype($messageData[1]) + ); + } // Call parent exception constructor parent::__construct($message, $code); -- 2.39.5