Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016 #ifndef TAO_ZIOP_H
00017 #define TAO_ZIOP_H
00018 #include "ace/pre.h"
00019
00020 #include "tao/ZIOP/ziop_export.h"
00021
00022 #if !defined (ACE_LACKS_PRAGMA_ONCE)
00023 # pragma once
00024 #endif
00025
00026 #include "tao/PI/PI.h"
00027 #include "tao/ZIOP_Adapter.h"
00028 #include "tao/Compression/Compression.h"
00029 #include "tao/Policy_Validator.h"
00030 #include "ace/Service_Config.h"
00031
00032 TAO_BEGIN_VERSIONED_NAMESPACE_DECL
00033
00034
00035
00036
00037
00038
00039
00040 class TAO_ZIOP_Export TAO_ZIOP_Loader : public TAO_ZIOP_Adapter
00041 {
00042 public:
00043
00044
00045 TAO_ZIOP_Loader (void);
00046
00047
00048 virtual ~TAO_ZIOP_Loader (void);
00049
00050 virtual bool decompress (ACE_Data_Block **db, TAO_Queued_Data& qd, TAO_ORB_Core& orb_core);
00051
00052
00053 virtual bool marshal_data (TAO_OutputCDR& cdr, TAO_Stub& stub);
00054 virtual bool marshal_data (TAO_OutputCDR& cdr, TAO_ORB_Core& orb_core);
00055
00056
00057 virtual int init (int argc, ACE_TCHAR* []);
00058
00059 virtual void load_policy_validators (TAO_Policy_Validator &validator);
00060
00061
00062 static int Initializer (void);
00063
00064
00065 static const char * ziop_compressorid_name (::Compression::CompressorId st);
00066
00067 private:
00068
00069
00070 bool initialized_;
00071
00072
00073 void dump_msg (const char *type, const u_char *ptr,
00074 size_t len, size_t original_data_length,
00075 ::Compression::CompressorId compressor_id,
00076 ::Compression::CompressionLevel compression_level);
00077
00078
00079 CORBA::ULong compression_policy_value (CORBA::Policy_ptr policy) const;
00080
00081 bool get_compressor_details (
00082 ::Compression::CompressorIdLevelList *list,
00083 Compression::CompressorId &compressor_id,
00084 Compression::CompressionLevel &compression_level);
00085
00086 bool get_compression_details(CORBA::Policy_ptr compression_enabling_policy,
00087 CORBA::Policy_ptr compression_level_list_policy,
00088 Compression::CompressorId &compressor_id,
00089 Compression::CompressionLevel &compression_level);
00090
00091 bool complete_compression (Compression::Compressor_ptr compressor,
00092 TAO_OutputCDR &cdr,
00093 ACE_Message_Block& mb,
00094 char *initial_rd_ptr,
00095 CORBA::ULong low_value,
00096 Compression::CompressionRatio min_ratio,
00097 CORBA::ULong original_data_length,
00098 Compression::CompressorId compressor_id);
00099
00100 bool compress_data (TAO_OutputCDR &cdr,
00101 CORBA::Object_ptr compression_manager,
00102 CORBA::ULong low_value,
00103 ::Compression::CompressionRatio min_ratio,
00104 ::Compression::CompressorId compressor_id,
00105 ::Compression::CompressionLevel compression_level);
00106
00107 bool compress (Compression::Compressor_ptr compressor,
00108 const ::Compression::Buffer &source,
00109 ::Compression::Buffer &target);
00110
00111 bool decompress (Compression::Compressor_ptr compressor,
00112 const ::Compression::Buffer &source,
00113 ::Compression::Buffer &target);
00114
00115 ::Compression::CompressionRatio get_ratio (CORBA::OctetSeq& uncompressed,
00116 CORBA::OctetSeq& compressed);
00117
00118 bool check_min_ratio (const ::Compression::CompressionRatio& this_ratio,
00119 ::Compression::CompressionRatio overall_ratio,
00120 ::Compression::CompressionRatio min_ratio) const;
00121 };
00122
00123 static int
00124 TAO_Requires_ZIOP_Initializer = TAO_ZIOP_Loader::Initializer ();
00125
00126
00127 ACE_STATIC_SVC_DECLARE (TAO_ZIOP_Loader)
00128 ACE_FACTORY_DECLARE (TAO_ZIOP, TAO_ZIOP_Loader)
00129
00130 TAO_END_VERSIONED_NAMESPACE_DECL
00131
00132 #define TAO_ZIOP_SAFE_INCLUDE
00133 #include "tao/ZIOP/ZIOPC.h"
00134 #undef TAO_ZIOP_SAFE_INCLUDE
00135
00136 #include "ace/post.h"
00137 #endif
00138
00139