Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013 #ifndef TAO_BASE_COMPRESSOR_H
00014 #define TAO_BASE_COMPRESSOR_H
00015
00016 #include "ace/pre.h"
00017
00018 #include "tao/Compression/compression_export.h"
00019
00020 #if !defined (ACE_LACKS_PRAGMA_ONCE)
00021 # pragma once
00022 #endif
00023
00024 #include "tao/Compression/Compression.h"
00025 #include "tao/LocalObject.h"
00026
00027 TAO_BEGIN_VERSIONED_NAMESPACE_DECL
00028
00029 namespace TAO
00030 {
00031
00032
00033
00034 class TAO_Compression_Export BaseCompressor :
00035 public virtual ::Compression::Compressor,
00036 public virtual ::CORBA::LocalObject
00037 {
00038 public:
00039 BaseCompressor (::Compression::CompressionLevel compression_level,
00040 ::Compression::CompressorFactory_ptr compressor_factory);
00041
00042 virtual void compress (const ::Compression::Buffer &source,
00043 ::Compression::Buffer &target) = 0;
00044
00045 virtual void decompress (const ::Compression::Buffer &source,
00046 ::Compression::Buffer &target) = 0;
00047
00048 virtual ::Compression::CompressorFactory_ptr compressor_factory (void);
00049
00050 virtual ::Compression::CompressionLevel compression_level (void);
00051
00052 virtual ::CORBA::ULongLong compressed_bytes (void);
00053
00054 virtual ::CORBA::ULongLong uncompressed_bytes (void);
00055
00056 virtual ::Compression::CompressionRatio compression_ratio (void);
00057
00058 protected:
00059 void update_stats (::CORBA::ULongLong compressed_bytes,
00060 ::CORBA::ULongLong uncompressed_bytes);
00061
00062 TAO_SYNCH_MUTEX mutex_;
00063 ::Compression::CompressionLevel compression_level_;
00064 ::Compression::CompressorFactory_var compressor_factory_;
00065 ::CORBA::ULongLong compressed_bytes_;
00066 ::CORBA::ULongLong uncompressed_bytes_;
00067 };
00068 }
00069
00070 TAO_END_VERSIONED_NAMESPACE_DECL
00071
00072 #include "ace/post.h"
00073
00074 #endif
00075