From: Roland Häder Date: Wed, 31 Aug 2011 20:29:04 +0000 (+0000) Subject: Added ZlibCompressor class, GzipCompressor used zlib functions by mistake X-Git-Url: https://git.mxchange.org/?p=core.git;a=commitdiff_plain;h=907685768720562b2776d0f80ed832e0bd6e11a2 Added ZlibCompressor class, GzipCompressor used zlib functions by mistake --- diff --git a/.gitattributes b/.gitattributes index 679412da..c2dc9ba6 100644 --- a/.gitattributes +++ b/.gitattributes @@ -280,6 +280,7 @@ inc/classes/main/compressor/.htaccess svneol=native#text/plain inc/classes/main/compressor/class_Bzip2Compressor.php svneol=native#text/plain inc/classes/main/compressor/class_GzipCompressor.php svneol=native#text/plain inc/classes/main/compressor/class_NullCompressor.php svneol=native#text/plain +inc/classes/main/compressor/class_ZlibCompressor.php svneol=native#text/plain inc/classes/main/console/.htaccess svneol=native#text/plain inc/classes/main/console/class_ConsoleTools.php svneol=native#text/plain inc/classes/main/container/.htaccess svneol=native#text/plain diff --git a/inc/classes/main/compressor/class_ZlibCompressor.php b/inc/classes/main/compressor/class_ZlibCompressor.php new file mode 100644 index 00000000..695e400d --- /dev/null +++ b/inc/classes/main/compressor/class_ZlibCompressor.php @@ -0,0 +1,99 @@ + + * @version 0.0.0 + * @copyright Copyright (c) 2007, 2008 Roland Haeder, 2009 - 2011 Core Developer Team + * @license GNU GPL 3.0 or any newer version + * @link http://www.ship-simu.org + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +class ZlibCompressor extends BaseFrameworkSystem implements Compressor { + /** + * Protected constructor + * + * @return void + */ + protected function __construct () { + // Call parent constructor! + parent::__construct(__CLASS__); + } + + /** + * Create a new compressor channel based a given compression handler + * + * @return $compressorInstance An instance of this class + */ + public static final function createZlibCompressor () { + // Routines not found by default + $compressorInstance = NULL; + + // Get new instance + if ((function_exists('gzcompress')) && (function_exists('gzuncompress'))) { + // Compressor can maybe be used + $compressorInstance = new ZlibCompressor(); + } // END - if + + // Return the compressor instance + return $compressorInstance; + } + + /** + * ZLIB compression stream + * + * @param $streamData Mixed non-object stream data + * @return $streamData The compressed stream data + * @throws InvalidObjectException If the stream is an object + */ + public function compressStream ($streamData) { + if (is_object($streamData)) { + // Throw an exception + throw new InvalidObjectException($streamData, self::EXCEPTION_UNEXPECTED_OBJECT); + } // END - if + + // Return the compressed stream + return gzcompress($streamData, 1); + } + + /** + * ZLIB decompression stream + * + * @param $streamData Mixed non-object stream data + * @return $streamData The decompressed stream data + * @throws InvalidObjectException If the stream is an object + */ + public function decompressStream ($streamData) { + if (is_object($streamData)) { + // Throw an exception + throw new InvalidObjectException($streamData, self::EXCEPTION_UNEXPECTED_OBJECT); + } // END - if + + // Return the decompressed stream + return gzuncompress($streamData); + } + + /** + * Getter for the file extension of this compressor + * + * @return $string Returns always 'gz' + */ + public final function getCompressorExtension () { + return 'z'; + } +} + +// [EOF] +?>