aboutsummaryrefslogtreecommitdiff
path: root/nxcomp/StaticCompressor.cpp
diff options
context:
space:
mode:
authorMike Gabriel <mike.gabriel@das-netzwerkteam.de>2017-06-30 20:13:51 +0200
committerMike Gabriel <mike.gabriel@das-netzwerkteam.de>2017-07-26 10:12:43 +0200
commitf76c82403888bb498973ec974dbfd20e4edb02fe (patch)
treebe0cb6c112d9d9fb46387fbd114727510197ddec /nxcomp/StaticCompressor.cpp
parent9193d11eeeea933e293acd5e0f03fa4e9887186b (diff)
downloadnx-libs-f76c82403888bb498973ec974dbfd20e4edb02fe.tar.gz
nx-libs-f76c82403888bb498973ec974dbfd20e4edb02fe.tar.bz2
nx-libs-f76c82403888bb498973ec974dbfd20e4edb02fe.zip
nxcomp: Switch to autoreconf.
Diffstat (limited to 'nxcomp/StaticCompressor.cpp')
-rw-r--r--nxcomp/StaticCompressor.cpp428
1 files changed, 0 insertions, 428 deletions
diff --git a/nxcomp/StaticCompressor.cpp b/nxcomp/StaticCompressor.cpp
deleted file mode 100644
index 93103af41..000000000
--- a/nxcomp/StaticCompressor.cpp
+++ /dev/null
@@ -1,428 +0,0 @@
-/**************************************************************************/
-/* */
-/* Copyright (c) 2001, 2011 NoMachine (http://www.nomachine.com) */
-/* Copyright (c) 2008-2014 Oleksandr Shneyder <o.shneyder@phoca-gmbh.de> */
-/* Copyright (c) 2014-2016 Ulrich Sibiller <uli42@gmx.de> */
-/* Copyright (c) 2014-2016 Mihai Moldovan <ionic@ionic.de> */
-/* Copyright (c) 2011-2016 Mike Gabriel <mike.gabriel@das-netzwerkteam.de>*/
-/* Copyright (c) 2015-2016 Qindel Group (http://www.qindel.com) */
-/* */
-/* NXCOMP, NX protocol compression and NX extensions to this software */
-/* are copyright of the aforementioned persons and companies. */
-/* */
-/* Redistribution and use of the present software is allowed according */
-/* to terms specified in the file LICENSE.nxcomp which comes in the */
-/* source distribution. */
-/* */
-/* All rights reserved. */
-/* */
-/* NOTE: This software has received contributions from various other */
-/* contributors, only the core maintainers and supporters are listed as */
-/* copyright holders. Please contact us, if you feel you should be listed */
-/* as copyright holder, as well. */
-/* */
-/**************************************************************************/
-
-#include "Z.h"
-#include "Misc.h"
-#include "Control.h"
-
-#include "EncodeBuffer.h"
-#include "DecodeBuffer.h"
-
-#include "StaticCompressor.h"
-
-#define PANIC
-#define WARNING
-#undef TEST
-#undef DEBUG
-
-StaticCompressor::StaticCompressor(int compressionLevel,
- int compressionThreshold)
-{
- buffer_ = NULL;
- bufferSize_ = 0;
-
- compressionStream_.zalloc = (alloc_func) 0;
- compressionStream_.zfree = (free_func) 0;
- compressionStream_.opaque = (voidpf) 0;
-
- decompressionStream_.zalloc = (alloc_func) 0;
- decompressionStream_.zfree = (free_func) 0;
- decompressionStream_.opaque = (void *) 0;
-
- decompressionStream_.next_in = (Bytef *) 0;
- decompressionStream_.avail_in = 0;
-
- #ifdef TEST
- *logofs << "StaticCompressor: Compression level is "
- << compressionLevel << ".\n" << logofs_flush;
- #endif
-
- int result = deflateInit2(&compressionStream_, compressionLevel, Z_DEFLATED,
- 15, 9, Z_DEFAULT_STRATEGY);
-
- if (result != Z_OK)
- {
- #ifdef PANIC
- *logofs << "StaticCompressor: PANIC! Cannot initialize the "
- << "compression stream. Error is '" << zError(result)
- << "'.\n" << logofs_flush;
- #endif
-
- cerr << "Error" << ": Cannot initialize the compression "
- << "stream. Error is '" << zError(result) << "'.\n";
-
- HandleAbort();
- }
-
- result = inflateInit2(&decompressionStream_, 15);
-
- if (result != Z_OK)
- {
- #ifdef PANIC
- *logofs << "StaticCompressor: PANIC! Cannot initialize the "
- << "decompression stream. Error is '" << zError(result)
- << "'.\n" << logofs_flush;
- #endif
-
- cerr << "Error" << ": Cannot initialize the decompression "
- << "stream. Error is '" << zError(result) << "'.\n";
-
- HandleAbort();
- }
-
- #ifdef TEST
- *logofs << "StaticCompressor: Compression threshold is "
- << compressionThreshold << ".\n" << logofs_flush;
- #endif
-
- threshold_ = compressionThreshold;
-}
-
-StaticCompressor::~StaticCompressor()
-{
- int result = deflateEnd(&compressionStream_);
-
- if (result != Z_OK)
- {
- #ifdef PANIC
- *logofs << "StaticCompressor: PANIC! Cannot deinitialize the "
- << "compression stream. Error is '" << zError(result)
- << "'.\n" << logofs_flush;
- #endif
-
- cerr << "Error" << ": Cannot deinitialize the compression "
- << "stream. Error is '" << zError(result) << "'.\n";
- }
-
- result = inflateEnd(&decompressionStream_);
-
- if (result != Z_OK)
- {
- #ifdef PANIC
- *logofs << "StaticCompressor: PANIC! Cannot deinitialize the "
- << "decompression stream. Error is '" << zError(result)
- << "'.\n" << logofs_flush;
- #endif
-
- cerr << "Error" << ": Cannot deinitialize the decompression "
- << "stream. Error is '" << zError(result) << "'.\n";
- }
-
- delete [] buffer_;
-}
-
-//
-// This function compresses and encodes the compressed
-// buffer. It returns a pointer to the internal buffer
-// where data was compressed.
-//
-
-int StaticCompressor::compressBuffer(const unsigned char *plainBuffer,
- const unsigned int plainSize,
- unsigned char *&compressedBuffer,
- unsigned int &compressedSize,
- EncodeBuffer &encodeBuffer)
-{
- if (control -> LocalDataCompression == 0 ||
- compressBuffer(plainBuffer, plainSize,
- compressedBuffer, compressedSize) <= 0)
- {
- encodeBuffer.encodeBoolValue(0);
-
- encodeBuffer.encodeMemory(plainBuffer, plainSize);
-
- return 0;
- }
- else
- {
- encodeBuffer.encodeBoolValue(1);
-
- encodeBuffer.encodeValue(compressedSize, 32, 14);
- encodeBuffer.encodeValue(plainSize, 32, 14);
-
- encodeBuffer.encodeMemory(compressedBuffer, compressedSize);
-
- return 1;
- }
-}
-
-//
-// This function compresses data into a dynamically
-// allocated buffer and returns a pointer to it, so
-// application must copy data before the next call.
-//
-
-int StaticCompressor::compressBuffer(const unsigned char *plainBuffer,
- const unsigned int plainSize,
- unsigned char *&compressedBuffer,
- unsigned int &compressedSize)
-{
- #ifdef DEBUG
- *logofs << "StaticCompressor: Called for buffer at "
- << (void *) plainBuffer << ".\n"
- << logofs_flush;
- #endif
-
- compressedSize = plainSize;
-
- if (plainSize < (unsigned int) threshold_)
- {
- #ifdef TEST
- *logofs << "StaticCompressor: Leaving buffer unchanged. "
- << "Plain size is " << plainSize << " with threshold "
- << (unsigned int) threshold_ << ".\n" << logofs_flush;
- #endif
-
- return 0;
- }
-
- //
- // Determine the size of the temporary
- // buffer.
- //
-
- unsigned int newSize = plainSize + (plainSize / 1000) + 12;
-
- //
- // Allocate a new buffer if it grows
- // beyond 64K.
- //
-
- if (buffer_ == NULL || (bufferSize_ > 65536 &&
- newSize < bufferSize_ / 2) || newSize > bufferSize_)
- {
- delete [] buffer_;
-
- buffer_ = new unsigned char[newSize];
-
- if (buffer_ == NULL)
- {
- #ifdef PANIC
- *logofs << "StaticCompressor: PANIC! Can't allocate compression "
- << "buffer of " << newSize << " bytes. Error is " << EGET()
- << " ' " << ESTR() << "'.\n" << logofs_flush;
- #endif
-
- cerr << "Warning" << ": Can't allocate compression buffer of "
- << newSize << " bytes. Error is " << EGET()
- << " '" << ESTR() << "'.\n";
-
- bufferSize_ = 0;
-
- return 0;
- }
-
- bufferSize_ = newSize;
- }
-
- unsigned int resultingSize = newSize;
-
- int result = ZCompress(&compressionStream_, buffer_, &resultingSize,
- plainBuffer, plainSize);
-
- if (result == Z_OK)
- {
- if (resultingSize > newSize)
- {
- #ifdef PANIC
- *logofs << "StaticCompressor: PANIC! Overflow in compression "
- << "buffer size. " << "Expected size was " << newSize
- << " while it is " << resultingSize << ".\n"
- << logofs_flush;
- #endif
-
- cerr << "Error" << ": Overflow in compress buffer size. "
- << "Expected size was " << newSize << " while it is "
- << resultingSize << ".\n";
-
- return -1;
- }
- else if (resultingSize >= plainSize)
- {
- #ifdef TEST
- *logofs << "StaticCompressor: Leaving buffer unchanged. "
- << "Plain size is " << plainSize << " compressed "
- << "size is " << resultingSize << ".\n"
- << logofs_flush;
- #endif
-
- return 0;
- }
-
- compressedBuffer = buffer_;
- compressedSize = resultingSize;
-
- #ifdef TEST
- *logofs << "StaticCompressor: Compressed buffer from "
- << plainSize << " to " << resultingSize
- << " bytes.\n" << logofs_flush;
- #endif
-
- return 1;
- }
-
- #ifdef PANIC
- *logofs << "StaticCompressor: PANIC! Failed compression of buffer. "
- << "Error is '" << zError(result) << "'.\n"
- << logofs_flush;
- #endif
-
- cerr << "Error" << ": Failed compression of buffer. "
- << "Error is '" << zError(result) << "'.\n";
-
- return -1;
-}
-
-int StaticCompressor::decompressBuffer(unsigned char *plainBuffer,
- unsigned int plainSize,
- const unsigned char *&compressedBuffer,
- unsigned int &compressedSize,
- DecodeBuffer &decodeBuffer)
-{
- #ifdef DEBUG
- *logofs << "StaticCompressor: Called for buffer at "
- << (void *) plainBuffer << ".\n"
- << logofs_flush;
- #endif
-
- unsigned int value;
-
- decodeBuffer.decodeBoolValue(value);
-
- if (value == 0)
- {
- memcpy(plainBuffer,
- decodeBuffer.decodeMemory(plainSize),
- plainSize);
-
- return 0;
- }
-
- unsigned int checkSize = plainSize;
-
- decodeBuffer.decodeValue(value, 32, 14);
- compressedSize = value;
-
- decodeBuffer.decodeValue(value, 32, 14);
- checkSize = value;
-
- //
- // If caller needs the original compressed
- // data it must copy this to its own buffer
- // before using any further decode function.
- //
-
- compressedBuffer = decodeBuffer.decodeMemory(compressedSize);
-
- int result = ZDecompress(&decompressionStream_, plainBuffer, &checkSize,
- compressedBuffer, compressedSize);
-
- if (result != Z_OK)
- {
- #ifdef PANIC
- *logofs << "StaticCompressor: PANIC! Failure decompressing buffer. "
- << "Error is '" << zError(result) << "'.\n"
- << logofs_flush;
- #endif
-
- cerr << "Error" << ": Failure decompressing buffer. "
- << "Error is '" << zError(result) << "'.\n";
-
- return -1;
- }
- else if (plainSize != checkSize)
- {
- #ifdef PANIC
- *logofs << "StaticCompressor: PANIC! Expected decompressed size was "
- << plainSize << " while it is " << checkSize
- << ".\n" << logofs_flush;
- #endif
-
- cerr << "Error" << ": Expected decompressed size was "
- << plainSize << " while it is " << checkSize
- << ".\n";
-
- return -1;
- }
-
- return 1;
-}
-
-//
-// This is used to uncompress on-the-fly
-// messages whose data has been stored
-// in compressed format.
-//
-
-int StaticCompressor::decompressBuffer(unsigned char *plainBuffer,
- const unsigned int plainSize,
- const unsigned char *compressedBuffer,
- const unsigned int compressedSize)
-{
- #ifdef TEST
- *logofs << "StaticCompressor: Called for buffer at "
- << (void *) plainBuffer << ".\n"
- << logofs_flush;
- #endif
-
- unsigned int checkSize = plainSize;
-
- int result = ZDecompress(&decompressionStream_, plainBuffer, &checkSize,
- compressedBuffer, compressedSize);
-
- if (result != Z_OK)
- {
- #ifdef PANIC
- *logofs << "StaticCompressor: PANIC! Failure decompressing buffer. "
- << "Error is '" << zError(result) << "'.\n"
- << logofs_flush;
- #endif
-
- return -1;
- }
-
- if (plainSize != checkSize)
- {
- #ifdef PANIC
- *logofs << "StaticCompressor: PANIC! Expected decompressed size was "
- << plainSize << " while it is " << checkSize
- << ".\n" << logofs_flush;
- #endif
-
- cerr << "Error" << ": Expected decompressed size was "
- << plainSize << " while it is " << checkSize
- << ".\n";
-
- return -1;
- }
-
- #ifdef TEST
- *logofs << "StaticCompressor: Decompressed buffer from "
- << compressedSize << " to " << plainSize
- << " bytes.\n" << logofs_flush;
- #endif
-
- return 1;
-}