]> git.mxchange.org Git - hub.git/commitdiff
Private attribute converted to class constant (it will never change in run-time)
authorRoland Häder <roland@mxchange.org>
Wed, 30 Nov 2011 17:43:02 +0000 (17:43 +0000)
committerRoland Häder <roland@mxchange.org>
Wed, 30 Nov 2011 17:43:02 +0000 (17:43 +0000)
application/hub/main/helper/connection/tcp/class_TcpConnectionHelper.php
application/hub/main/package/class_NetworkPackage.php
application/hub/main/package/fragmenter/class_PackageFragmenter.php

index 260bcdf8d77abfad523fc8c24c31a3b17d0a9707..d945992fd097949ff85a91ae7d406a13e274b4f8 100644 (file)
@@ -88,8 +88,39 @@ class TcpConnectionHelper extends BaseConnectionHelper implements ConnectionHelp
                // Set the resource
                $helperInstance->setSocketResource($socketResource);
 
-               // Resolve any session ids; 0 = IP, 1 = Port
-               $recipientData = explode(':', HubTools::resolveSessionId($packageData[NetworkPackage::PACKAGE_DATA_RECIPIENT]));
+               // @TODO The whole resolving part should be moved out and made more configurable
+               // Init recipient data
+               $recipientData = NULL;
+
+               // Try to solve the recipient
+               try {
+                       // Resolve any session ids; 0 = IP, 1 = Port
+                       $recipientData = explode(':', HubTools::resolveSessionId($packageData[NetworkPackage::PACKAGE_DATA_RECIPIENT]));
+               } catch (NoValidHostnameException $e) {
+                       // Debug message
+                       $helperInstance->debugOutput('CONNECTION: Failed to resolve ' . $packageData[NetworkPackage::PACKAGE_DATA_RECIPIENT] . ':' . $e->getMessage());
+
+                       // Is the recipient equal as configured IP
+                       if (substr($packageData[NetworkPackage::PACKAGE_DATA_RECIPIENT], 0, strlen($helperInstance->getConfigInstance()->getConfigEntry('external_ip'))) == $helperInstance->getConfigInstance()->getConfigEntry('external_ip')) {
+                               // This connects to ship-simu.org and requests /ip.php which will return our external IP number
+                               $recipientData[0] = ConsoleTools::determineExternalIp();
+
+                               // Do we have hostname:ip match?
+                               if (strpos($packageData[NetworkPackage::PACKAGE_DATA_RECIPIENT], ':') === false) {
+                                       // No hostname:ip!
+                                       $helperInstance->debugInstance($packageData[NetworkPackage::PACKAGE_DATA_RECIPIENT] . ' does not contain ":". Please fix this.');
+                               } // END - if
+
+                               // "explode" the hostname:ip, so index 1 will be the port number
+                               $recipientArray = explode(':', $packageData[NetworkPackage::PACKAGE_DATA_RECIPIENT]);
+
+                               // Add the port
+                               $recipientData[1] = $recipientArray[1];
+                       } else {
+                               // It doesn't match, we need to take care of this later
+                               $helperInstance->debugInstance($packageData[NetworkPackage::PACKAGE_DATA_RECIPIENT] . '!=' . $helperInstance->getConfigInstance()->getConfigEntry('external_ip'));
+                       }
+               }
 
                // Set ip/port
                $helperInstance->setAddress($recipientData[0]);
index 6d1be1ecb70f1795522d927b5ace7f0ad79feee0..5ec8f75d2bb8e32d03561d47d3e7fac1a2605bc1 100644 (file)
@@ -269,7 +269,8 @@ class NetworkPackage extends BaseFrameworkSystem implements Deliverable, Receiva
 
                /*
                 * The recipient list can be cleaned up here because the package which
-                * shall be delivered has been added for all entries from the list.
+                * shall be delivered has already been added for all entries from the
+                * list.
                 */
                $discoveryInstance->clearRecipients();
        }
index 453c0b148636499afefe0b7ed86ae43403120245..d7481c2452f26f485ff9d41e1709979e6652657e 100644 (file)
@@ -62,14 +62,14 @@ class PackageFragmenter extends BaseFrameworkSystem implements Fragmentable, Reg
        private $serialNumber = 0x00000000;
 
        /**
-        * Length of largest possible serial number
+        * Maximum possible serial number
         */
-       private $maxSerialLength = 8;
+       private $maxSerialNumber  = 0;
 
        /**
-        * Maximum possible serial number
+        * Length of largest possible serial number
         */
-       private $maxSerialNumber  = 0;
+       const MAX_SERIAL_LENGTH = 8;
 
        /**
         * Seperator between chunk data, serial number and chunk hash
@@ -137,7 +137,7 @@ class PackageFragmenter extends BaseFrameworkSystem implements Fragmentable, Reg
                $this->chunkSize = $this->getConfigInstance()->getConfigEntry('package_chunk_size');
 
                // - Maximum serial number
-               $this->maxSerialNumber = $this->hex2dec(str_repeat('f', $this->maxSerialLength));
+               $this->maxSerialNumber = $this->hex2dec(str_repeat('f', self::MAX_SERIAL_LENGTH));
        }
 
        /**
@@ -176,7 +176,8 @@ class PackageFragmenter extends BaseFrameworkSystem implements Fragmentable, Reg
 
                // Is the array index there?
                $isProcessed = (
-                       (isset($this->processedPackages[$index])) &&
+                       (isset($this->processedPackages[$index]))
+                               &&
                        ($this->processedPackages[$index] === true)
                );
 
@@ -255,7 +256,7 @@ class PackageFragmenter extends BaseFrameworkSystem implements Fragmentable, Reg
                        // Length of sperators
                        (strlen(self::CHUNK_DATA_HASH_SEPERATOR) * 2) -
                        // Length of max serial number
-                       $this->maxSerialLength
+                       self::MAX_SERIAL_LENGTH
                );
 
                // This should be larger than zero bytes
@@ -289,7 +290,7 @@ class PackageFragmenter extends BaseFrameworkSystem implements Fragmentable, Reg
                assert($this->serialNumber <= $this->maxSerialNumber);
 
                // Encode the current serial number
-               $encodedSerialNumber = $this->dec2Hex($this->serialNumber, $this->maxSerialLength);
+               $encodedSerialNumber = $this->dec2Hex($this->serialNumber, self::MAX_SERIAL_LENGTH);
 
                // Count one up
                $this->serialNumber++;