#include "ZlibCompressor.h" ACE_RCSID (ZLIB, ZlibCompressor, "$Id$") #include "zlib.h" TAO_BEGIN_VERSIONED_NAMESPACE_DECL namespace TAO { ZlibCompressor::ZlibCompressor ( ::Compression::CompressionLevel compression_level, ::Compression::CompressorFactory_ptr compressor_factory) : BaseCompressor (compression_level, compressor_factory) { } void ZlibCompressor::compress ( const ::CORBA::OctetSeq & source, ::CORBA::OctetSeq & target ) { ::CORBA::ULong max_length = static_cast (source.length () * 1.1) + 12; target.length (max_length); int const retval = ::compress2 (reinterpret_cast (target.get_buffer ()), reinterpret_cast (&max_length), reinterpret_cast (source.get_buffer ()), source.length (), this->compression_level ()); if (retval != Z_OK) { throw ::Compression::CompressionException (); } else { target.length (max_length); } } void ZlibCompressor::decompress ( const ::CORBA::OctetSeq & source, ::CORBA::OctetSeq & target) { CORBA::ULong max_length = target.length (); int const retval = uncompress (reinterpret_cast (target.get_buffer ()), reinterpret_cast (&max_length), reinterpret_cast (source.get_buffer ()), source.length ()); if (retval != Z_OK) { throw ::Compression::CompressionException (); } else { target.length (max_length); } } } TAO_END_VERSIONED_NAMESPACE_DECL