assert(isset($unlData[UniversalNodeLocator::UNL_PART_ADDRESS]));
assert(isset($unlData[UniversalNodeLocator::UNL_PART_PORT]));
- // Get current time
- $time = time();
-
// "Cache" socket resource and timeout config
$socketResource = $this->getSocketResource();
$timeout = $this->getConfigInstance()->getConfigEntry('socket_timeout_seconds');
// Debug output
self::createDebugInstance(__CLASS__)->debugOutput('CONNECTION-HELPER[' . __METHOD__ . ':' . __LINE__ . ']: Trying to connect to ' . $unlData[UniversalNodeLocator::UNL_PART_ADDRESS] . ':' . $unlData[UniversalNodeLocator::UNL_PART_PORT] . ' with socketResource[' . gettype($socketResource) . ']=' . $socketResource . ' ...');
+ // Get current time
+ $time = time();
+
// Try to connect until it is connected
while ($isConnected = !@socket_connect($socketResource, $unlData[UniversalNodeLocator::UNL_PART_ADDRESS], $unlData[UniversalNodeLocator::UNL_PART_PORT])) {
// Get last socket error
if (($socketError == SOCKET_EINPROGRESS) || ($socketError == SOCKET_EALREADY)) {
// Now, is that attempt within parameters?
if ((time() - $time) >= $timeout) {
+ // Debug message
+ /* DEBUG: */ self::createDebugInstance(__CLASS__)->debugOutput('CONNECTION-HELPER[' . __METHOD__ . ':' . __LINE__ . ']: timeout=' . $timeout .' reached, connection attempt failed.');
+
// Didn't work within timeout
$isConnected = FALSE;
break;
// Sleep about one second
$this->idle(1000);
} elseif ($socketError != 0) {
+ // Debug message
+ /* DEBUG: */ self::createDebugInstance(__CLASS__)->debugOutput('CONNECTION-HELPER[' . __METHOD__ . ':' . __LINE__ . ']: socketError=' . $socketError . ' detected.');
+
// Stop on everything else pronto
$isConnected = FALSE;
break;
}
} // END - while
+ // Log error code
+ /* DEBUG: */ self::createDebugInstance(__CLASS__)->debugOutput('CONNECTION-HELPER[' . __METHOD__ . ':' . __LINE__ . ']: socketError=' . $socketError . ',isConnected=' . intval($isConnected) . ' after while() loop.');
+
// Is the peer connected?
if ($isConnected === TRUE) {
// Connection is fully established here, so change the state.