]> git.mxchange.org Git - hub.git/blobdiff - application/hub/main/package/fragmenter/class_PackageFragmenter.php
'hub' project continued:
[hub.git] / application / hub / main / package / fragmenter / class_PackageFragmenter.php
index 81f63f242273c2bad97f64db60461f7bfceb55cd..d1c59c7fbcd3f33b0788f44a34bcb7f777f68b40 100644 (file)
@@ -30,7 +30,7 @@
  * You should have received a copy of the GNU General Public License
  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
  */
-class PackageFragmenter extends BaseFrameworkSystem implements Fragmentable, Registerable {
+class PackageFragmenter extends BaseHubSystem implements Fragmentable, Registerable {
        /**
         * Cached chunk size in bits
         */
@@ -284,40 +284,21 @@ class PackageFragmenter extends BaseFrameworkSystem implements Fragmentable, Reg
                return $hash;
        }
 
-       /**
-        * "Getter" for the next hexadecimal-encoded serial number
-        *
-        * @return      $encodedSerialNumber    The next hexadecimal-encoded serial number
-        */
-       private function getNextHexSerialNumber () {
-               // Assert on maximum serial number length
-               assert($this->serialNumber <= $this->maxSerialNumber);
-
-               // Encode the current serial number
-               $encodedSerialNumber = $this->dec2Hex($this->serialNumber, self::MAX_SERIAL_LENGTH);
-
-               // Count one up
-               $this->serialNumber++;
-
-               // Return the encoded serial number
-               return $encodedSerialNumber;
-       }
-
        /**
         * Appends an end-of-package chunk to the chunk list for given chunk and
         * final hash. As of 23-March-2012 the format of this chunk will be as any
         * regular one to keep things easy (KISS) in ChunkHandler class.
         *
-        * @param       $chunkHash      Last chunk's hash
+        * @param       $lastChunk      Last chunk raw data
         * @param       $finalHash      Final hash for raw (unencoded) data
         * @return      void
         */
-       private function appendEndOfPackageChunk ($chunkHash, $finalHash) {
+       private function appendEndOfPackageChunk ($lastChunk, $finalHash) {
                // Generate end-of-package marker
                $chunkData =
                        self::END_OF_PACKAGE_IDENTIFIER .
                        $finalHash . self::CHUNK_HASH_SEPARATOR .
-                       $chunkHash;
+                       $this->generateHashFromRawData($lastChunk);
 
                // Add it as regular chunk
                $this->addChunkData($finalHash, $chunkData);
@@ -342,6 +323,7 @@ class PackageFragmenter extends BaseFrameworkSystem implements Fragmentable, Reg
 
                // Init variables
                $chunkHash = '';
+               $chunkData = '';
 
                // Now split it up
                for ($idx = 0; $idx < strlen($rawData); $idx += $dataChunkSize) {
@@ -356,7 +338,7 @@ class PackageFragmenter extends BaseFrameworkSystem implements Fragmentable, Reg
                //* NOISY-DEBUG: */ $this->debugOutput('FRAGMENTER: Raw data of ' . strlen($rawData) . ' bytes has been fragmented into ' . count($this->chunks[$finalHash]) . ' chunk(s).');
 
                // Add end-of-package chunk
-               $this->appendEndOfPackageChunk($chunkHash, $finalHash);
+               $this->appendEndOfPackageChunk($chunkData, $finalHash);
        }
 
        /**
@@ -429,6 +411,25 @@ class PackageFragmenter extends BaseFrameworkSystem implements Fragmentable, Reg
                } // END - for
        }
 
+       /**
+        * "Getter" for the next hexadecimal-encoded serial number
+        *
+        * @return      $encodedSerialNumber    The next hexadecimal-encoded serial number
+        */
+       public function getNextHexSerialNumber () {
+               // Assert on maximum serial number length
+               assert($this->serialNumber <= $this->maxSerialNumber);
+
+               // Encode the current serial number
+               $encodedSerialNumber = $this->dec2Hex($this->serialNumber, self::MAX_SERIAL_LENGTH);
+
+               // Count one up
+               $this->serialNumber++;
+
+               // Return the encoded serial number
+               return $encodedSerialNumber;
+       }
+
        /**
         * This method does "implode" the given package data array into one long
         * string, splits it into small chunks, adds a serial number and checksum
@@ -517,6 +518,15 @@ class PackageFragmenter extends BaseFrameworkSystem implements Fragmentable, Reg
                // Return the chunk array
                return $rawDataChunk;
        }
+
+       /**
+        * Resets the serial number to zero
+        *
+        * @return      void
+        */
+       public function resetSerialNumber () {
+               $this->serialNumber = 0;
+       }
 }
 
 // [EOF]