X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;ds=sidebyside;f=framework%2Fmain%2Fclasses%2Ffile_directories%2Fio_stream%2Fclass_FileIoStream.php;h=551791f3b33f321a4d39753d93ae3e825012988b;hb=08a0c865dd2c8ee0b6dbf96f4f07e9ee0ce0f02b;hp=51406cbea3bafa2399c0d2131dae505caba3aa9e;hpb=c043deee4ad5b0f39830948b3ccd27f7fc38c193;p=core.git diff --git a/framework/main/classes/file_directories/io_stream/class_FileIoStream.php b/framework/main/classes/file_directories/io_stream/class_FileIoStream.php index 51406cbe..551791f3 100644 --- a/framework/main/classes/file_directories/io_stream/class_FileIoStream.php +++ b/framework/main/classes/file_directories/io_stream/class_FileIoStream.php @@ -1,22 +1,25 @@ * @version 0.0.0 - * @copyright Copyright (c) 2007, 2008 Roland Haeder, 2009 - 2017 Core Developer Team + * @copyright Copyright (c) 2007, 2008 Roland Haeder, 2009 - 2021 Core Developer Team * @license GNU GPL 3.0 or any newer version * @link http://www.shipsimu.org * @@ -57,7 +60,7 @@ class FileIoStream extends BaseFrameworkSystem implements FileInputStreamer, Fil /** * Protected constructor */ - protected function __construct () { + private function __construct () { // Call parent constructor parent::__construct(__CLASS__); } @@ -79,13 +82,13 @@ class FileIoStream extends BaseFrameworkSystem implements FileInputStreamer, Fil /** * Saves data to a given local file and create missing directory structures * - * @param $fileName The file name for the to be saved file + * @param $fileInfoInstance An instance of a SplFileInfo class * @param $dataArray The data we shall store to the file * @return void * @see FileOutputStreamer * @todo This method needs heavy rewrite */ - public final function saveFile ($fileName, array $dataArray) { + public final function saveFile (SplFileInfo $fileInfoInstance, array $dataArray) { // Try it five times $dirName = ''; $fileInstance = NULL; @@ -93,12 +96,12 @@ class FileIoStream extends BaseFrameworkSystem implements FileInputStreamer, Fil for ($idx = 0; $idx < 5; $idx++) { // Get a file output pointer try { - $fileInstance = ObjectFactory::createObjectByConfiguredName('file_raw_output_class', array($fileName, 'wb')); + $fileInstance = ObjectFactory::createObjectByConfiguredName('file_raw_output_class', array($fileInfoInstance, 'wb')); } catch (FileNotFoundException $e) { // Bail out ApplicationEntryPoint::exitApplication('The application has made a fatal error. Exception: ' . $e->__toString() . ' with message: ' . $e->getMessage()); } - } // END - for + } // Write a header information for validation purposes $fileInstance->writeToFile(sprintf('%s%s%s%s%s%s%s%s%s' . PHP_EOL, @@ -133,7 +136,7 @@ class FileIoStream extends BaseFrameworkSystem implements FileInputStreamer, Fil // Advance to the next 50-chars block $idx += 50; - } // END - while + } // Close the file unset($fileInstance); @@ -142,20 +145,20 @@ class FileIoStream extends BaseFrameworkSystem implements FileInputStreamer, Fil /** * Reads from a local file * - * @param $fqfn The full-qualified file-name which we shall load + * @param $infoInstance An instance of a SplFileInfo class * @return $array An array with the element 'header' and 'data' * @see FileInputStreamer */ - public final function loadFileContents ($fqfn) { + public final function loadFileContents (SplFileInfo $infoInstance) { // Initialize some variables and arrays $inputBuffer = ''; $lastBuffer = ''; - $header = array(); - $data = array(); + $header = []; + $data = []; $readData = ''; // This will contain our read data // Get a file input handler - $fileInstance = ObjectFactory::createObjectByConfiguredName('file_raw_input_class', array($fqfn)); + $fileInstance = ObjectFactory::createObjectByConfiguredName('file_raw_input_class', array($infoInstance)); // Read all it's contents (we very and transparently decompress it below) while ($readRawLine = $fileInstance->readFromFile()) { @@ -165,11 +168,11 @@ class FileIoStream extends BaseFrameworkSystem implements FileInputStreamer, Fil // Break infinite loop maybe caused by the input handler if ($lastBuffer == $inputBuffer) { break; - } // END - if + } // Remember last read line for avoiding possible infinite loops $lastBuffer = $inputBuffer; - } // END - while + } // Close directory handle unset($fileInstance); @@ -195,7 +198,7 @@ class FileIoStream extends BaseFrameworkSystem implements FileInputStreamer, Fil if (count($header) != 4) { // Throw an exception throw new InvalidArrayCountException(array($this, 'header', count($header), 4), self::EXCEPTION_ARRAY_HAS_INVALID_COUNT); - } // END - if + } } elseif (substr($rawLine, 0, 5) == self::FILE_IO_DATA_BLOCK_ID) { // Is a data line! $data = explode(self::FILE_IO_SEPARATOR, $rawLine); @@ -209,7 +212,7 @@ class FileIoStream extends BaseFrameworkSystem implements FileInputStreamer, Fil if (md5($data[0]) != $data[1]) { // MD5 hash did not match! throw new InvalidMD5ChecksumException(array($this, md5($data[0]), $data[1]), self::EXCEPTION_MD5_CHECKSUMS_MISMATCH); - } // END - if + } } else { // Invalid count! throw new InvalidArrayCountException(array($this, 'data', count($data), 2), self::EXCEPTION_ARRAY_HAS_INVALID_COUNT); @@ -221,19 +224,19 @@ class FileIoStream extends BaseFrameworkSystem implements FileInputStreamer, Fil // Other raw lines than header/data tagged lines and re-add the new-line char $readData .= $rawLine . PHP_EOL; } - } // END - foreach + } // Was raw lines read and no header/data? if ((!empty($readData)) && (count($header) == 0) && (count($data) == 0)) { // Return raw lines back return $readData; - } // END - if + } // Was a header found? if (count($header) != 4) { // Throw an exception throw new InvalidArrayCountException(array($this, 'header', count($header), 4), self::EXCEPTION_ARRAY_HAS_INVALID_COUNT); - } // END - if + } // Decode all from Base64 $readData = @base64_decode($readData); @@ -242,13 +245,13 @@ class FileIoStream extends BaseFrameworkSystem implements FileInputStreamer, Fil if (strlen($readData) != $header[2]) { // Size did not match throw new InvalidDataLengthException(array($this, strlen($readData), $header[2]), self::EXCEPTION_UNEXPECTED_STRING_SIZE); - } // END - if + } // Validate the decoded data with the final MD5 hash if (md5($readData) != $header[3]) { // MD5 hash did not match! throw new InvalidMD5ChecksumException(array($this, md5($readData), $header[3]), self::EXCEPTION_MD5_CHECKSUMS_MISMATCH); - } // END - if + } // Return all in an array return array( @@ -264,7 +267,7 @@ class FileIoStream extends BaseFrameworkSystem implements FileInputStreamer, Fil * @return $data The data (string mostly) to "stream" * @throws UnsupportedOperationException If this method is called */ - public function streamData ($data) { + public function streamData (string $data) { self::createDebugInstance(__CLASS__, __LINE__)->debugOutput('Unhandled ' . strlen($data) . ' bytes in this stream.'); throw new UnsupportedOperationException(array($this, __FUNCTION__), self::EXCEPTION_UNSPPORTED_OPERATION); } @@ -286,7 +289,7 @@ class FileIoStream extends BaseFrameworkSystem implements FileInputStreamer, Fil * @param $whence Added to offset (default: only use offset to seek to) * @return $status Status of file seek: 0 = success, -1 = failed */ - public function seek ($offset, $whence = SEEK_SET) { + public function seek (int $offset, int $whence = SEEK_SET) { $this->partialStub('offset=' . $offset . ',whence=' . $whence); }