assert(count($chunkSplits) == 3);
// Validate final chunk
- if (substr($chunkSplits[2], 0, strlen(PackageFragmenter::END_OF_PACKAGE_IDENTIFIER)) != PackageFragmenter::END_OF_PACKAGE_IDENTIFIER) {
+ if (substr($chunkSplits[ChunkHandler::CHUNK_SPLITS_INDEX_RAW_DATA], 0, strlen(PackageFragmenter::END_OF_PACKAGE_IDENTIFIER)) != PackageFragmenter::END_OF_PACKAGE_IDENTIFIER) {
// Not fine
$isValid = false;
- } elseif (substr_count($chunkSplits[2], PackageFragmenter::CHUNK_HASH_SEPARATOR) != 1) {
+ } elseif (substr_count($chunkSplits[ChunkHandler::CHUNK_SPLITS_INDEX_RAW_DATA], PackageFragmenter::CHUNK_HASH_SEPARATOR) != 1) {
// CHUNK_HASH_SEPARATOR shall only be found once
$isValid = false;
}
*/
const STACKER_NAME_CHUNKS_WITH_FINAL_EOP = 'final_chunks';
+ /**
+ * Chunk splits:
+ * 0 = Hash
+ * 1 = Serial number
+ * 2 = Raw data
+ */
+ const CHUNK_SPLITS_INDEX_HASH = 0;
+ const CHUNK_SPLITS_INDEX_SERIAL = 0;
+ const CHUNK_SPLITS_INDEX_RAW_DATA = 0;
+
/**
* The final array for assembling the original package back together
*/
*/
private function isChunkHashValid (array $chunkSplits) {
// Now hash the raw data again
- $chunkHash = $this->getCryptoInstance()->hashString($chunkSplits[2], $chunkSplits[0], false);
+ $chunkHash = $this->getCryptoInstance()->hashString($chunkSplits[self::CHUNK_SPLITS_INDEX_RAW_DATA], $chunkSplits[self::CHUNK_SPLITS_INDEX_HASH], false);
// Debug output
- //* NOISY-DEBUG: */ $this->debugOutput('CHUNK-HANDLER: chunkHash=' . $chunkHash . ',chunkSplits[0]=' . $chunkSplits[0] . ',chunkSplits[1]=' . $chunkSplits[1]);
+ //* NOISY-DEBUG: */ $this->debugOutput('CHUNK-HANDLER: chunkHash=' . $chunkHash . ',chunkSplits[chunk_hash]=' . $chunkSplits[self::CHUNK_SPLITS_INDEX_HASH] . ',chunkSplits[serial]=' . $chunkSplits[self::CHUNK_SPLITS_INDEX_SERIAL] . ',chunkSplits[raw_data]=' . $chunkSplits[self::CHUNK_SPLITS_INDEX_RAW_DATA]);
// Check it
- $isValid = ($chunkSplits[0] === $chunkHash);
+ $isValid = ($chunkSplits[self::CHUNK_SPLITS_INDEX_HASH] === $chunkHash);
// ... and return it
return $isValid;
*/
private function addChunkToFinalArray (array $chunkSplits) {
// Is the serial number (index 1) already been added?
- if (isset($this->finalPackageChunks[$chunkSplits[1]])) {
+ if (isset($this->finalPackageChunks[$chunkSplits[self::CHUNK_SPLITS_INDEX_SERIAL]])) {
// Then throw an exception
throw new ChunkAlreadyAssembledException(array($this, $chunkSplits), self::EXCEPTION_CHUNK_ALREADY_ASSEMBLED);
} // END - if
// Add the chunk data (index 2) to the final array and use the serial number as index
- $this->finalPackageChunks['content'][$chunkSplits[1]] = $chunkSplits[2];
+ $this->finalPackageChunks['content'][$chunkSplits[self::CHUNK_SPLITS_INDEX_SERIAL]] = $chunkSplits[self::CHUNK_SPLITS_INDEX_RAW_DATA];
// ... and the hash as well
- $this->finalPackageChunks['hashes'][$chunkSplits[1]] = $chunkSplits[0];
+ $this->finalPackageChunks['hashes'][$chunkSplits[self::CHUNK_SPLITS_INDEX_SERIAL]] = $chunkSplits[self::CHUNK_SPLITS_INDEX_HASH];
}
/**
} // END - if
// Is the serial number valid (chars 0-9, length equals PackageFragmenter::MAX_SERIAL_LENGTH)?
- if (!$this->isSerialNumberValid($chunkSplits[1])) {
+ if (!$this->isSerialNumberValid($chunkSplits[self::CHUNK_SPLITS_INDEX_SERIAL])) {
// Do some logging
- $this->debugOutput('CHUNK-HANDLER: Chunk serial number for hash ' . $chunkSplits[0] . ' is invalid.');
+ $this->debugOutput('CHUNK-HANDLER: Chunk serial number for hash ' . $chunkSplits[self::CHUNK_SPLITS_INDEX_HASH] . ' is invalid.');
// Re-request this chunk
$this->rerequestChunkBySplitsArray($chunkSplits);
* Assembles all chunks (except EOP and "hash chunk") back together to the original package data.
*
* This is done by the following steps:
-*
+ *
* 1) Sort the final array with ksort(). This will bring the "hash
* chunk" up to the last array index and the EOP chunk to the
* pre-last array index