* @return $socketResource Socket resource
*/
public static function createSocketFromPackageData (array $packageData, $protocolName) {
+ // Get an instance
+ $factoryInstance = new SocketFactory();
+
// Construct registry key
$registryKey = 'socket_' . $protocolName . '_' . $packageData[NetworkPackage::PACKAGE_DATA_RECIPIENT];
+ // Debug message
+ $factoryInstance->debugOutput('SOCKET-FACTORY: Trying to find a socket with registryKey=' . $registryKey);
+
// Is the key there?
if (Registry::getRegistry()->instanceExists($registryKey)) {
// Get container instance
// Get socket back
$socketResource = $containerInstance->getSocketResource();
+
+ // Debug message
+ $factoryInstance->debugOutput('SOCKET-FACTORY: Using socket ' . $socketResource . '(' . gettype($socketResource) . ') from registry.');
} else {
// Construct configuration entry for object factory and get it
$className = FrameworkConfiguration::getSelfInstance()->getConfigEntry($protocolName . '_connection_helper_class');
+ // Debug message
+ $factoryInstance->debugOutput('SOCKET-FACTORY: Going to use class ' . $className . ' for creating a socket resource ...');
+
// And call the static method
$socketResource = call_user_func($className . '::createConnectionFromPackageData', $packageData);
+ // Debug message
+ $factoryInstance->debugOutput('SOCKET-FACTORY: Created socket ' . $socketResource . '(' . gettype($socketResource) . ') from class ' . $className . '.');
+
// Construct container class, this won't be reached if an exception is thrown
$containerInstance = ObjectFactory::CreateObjectByConfiguredName('socket_container_class', array($socketResource, NULL, $packageData));
// Register it with the registry
Registry::getRegistry()->addInstance($registryKey, $containerInstance);
+
+ // Debug message
+ $factoryInstance->debugOutput('SOCKET-FACTORY: Socket is now registered in registry.');
}
// Return the resource