Example #1
0
//------------------------------------------------------------------------------
void Compressor::stopCompression(void)
{
  try
  {
    filtering_ostreambuf out;
    
    out.push(zlib_compressor(getZlibParams()));
    
    out.push(*ostream_);
    
    copy (*bufferedStream_, out);
    
    obj_->setOStream(*ostream_);
    ostream_ = 0;
    
    bufferedStream_.reset();
    
  }
  catch (const zlib_error &z_err)
  {
    std::cerr << "Zlib compression failed with error code: "
              <<  z_err.error() << std::endl;
    throw z_err;
  }
}
Example #2
0
    void Compression::ZlibCompress (std::istream& is, std::ostream& os)
    {
	// Note : this is important to add the block size in order to be able to exchange
	// several messages accross not EOF bounded streams (TCP dialog for instance).
	std::stringstream tmp;

	std::stringstream ss;
	filtering_stream<output> fs;
	fs.push (zlib_compressor());
	fs.push (tmp);

	boost::iostreams::copy (is, fs);
	fs.pop ();

	int size = tmp.str ().length ();

	os << size << '#';
	boost::iostreams::copy (tmp, os);

    }