00001 #include "tao/ZIOP/ZIOP_Policy_Validator.h" 00002 00003 #if defined (TAO_HAS_CORBA_MESSAGING) && TAO_HAS_CORBA_MESSAGING != 0 00004 00005 #include "tao/ZIOP/ZIOP_Policy_i.h" 00006 #include "tao/Policy_Set.h" 00007 #include "tao/ORB_Core.h" 00008 00009 ACE_RCSID (ZIOP_GIOP, 00010 ZIOPPolicy_Validator, 00011 "$Id: ZIOP_Policy_Validator.cpp 84457 2009-02-13 14:52:13Z msmit $") 00012 00013 TAO_BEGIN_VERSIONED_NAMESPACE_DECL 00014 00015 TAO_ZIOPPolicy_Validator::TAO_ZIOPPolicy_Validator (TAO_ORB_Core &orb_core) 00016 : TAO_Policy_Validator (orb_core) 00017 { 00018 } 00019 00020 00021 void 00022 TAO_ZIOPPolicy_Validator::validate_impl (TAO_Policy_Set &policies) 00023 { 00024 CORBA::Policy_var policy = 00025 policies.get_cached_policy (TAO_CACHED_COMPRESSION_ENABLING_POLICY); 00026 00027 if (policy.in () == 0) 00028 return; 00029 00030 ZIOP::CompressionEnablingPolicy_var srp = 00031 ZIOP::CompressionEnablingPolicy::_narrow (policy.in ()); 00032 00033 if (srp.in () == 0) 00034 return; 00035 } 00036 00037 void 00038 TAO_ZIOPPolicy_Validator::merge_policies_impl (TAO_Policy_Set &policies) 00039 { 00040 // Check if the user has specified the compression enabled policy. 00041 CORBA::Policy_var compression_enabled = 00042 policies.get_cached_policy (TAO_CACHED_COMPRESSION_ENABLING_POLICY); 00043 00044 if (CORBA::is_nil (compression_enabled.in ())) 00045 { 00046 // If not, check if the compression enabled policy has been specified 00047 // at the ORB level. 00048 compression_enabled = 00049 this->orb_core_.get_cached_policy (TAO_CACHED_COMPRESSION_ENABLING_POLICY); 00050 00051 if (!CORBA::is_nil (compression_enabled.in ())) 00052 { 00053 // If so, we'll use that policy. 00054 policies.set_policy (compression_enabled.in ()); 00055 } 00056 } 00057 00058 // Check if the user has specified the compression low value policy. 00059 CORBA::Policy_var low_value_policy = 00060 policies.get_cached_policy (TAO_CACHED_COMPRESSION_LOW_VALUE_POLICY); 00061 00062 if (CORBA::is_nil (low_value_policy.in ())) 00063 { 00064 // If not, check if the compression low value policy has been 00065 // specified at the ORB level. 00066 low_value_policy = 00067 this->orb_core_.get_cached_policy (TAO_CACHED_COMPRESSION_LOW_VALUE_POLICY); 00068 00069 if (!CORBA::is_nil (low_value_policy.in ())) 00070 { 00071 // If so, we'll use that policy. 00072 policies.set_policy (low_value_policy.in ()); 00073 } 00074 } 00075 00076 // Check if the user has specified the minimum compression ratio policy. 00077 CORBA::Policy_var min_ratio_policy = 00078 policies.get_cached_policy (TAO_CACHED_MIN_COMPRESSION_RATIO_POLICY); 00079 00080 if (CORBA::is_nil (min_ratio_policy.in ())) 00081 { 00082 // If not, check if the minimum compression ratio policy has been 00083 // specified at the ORB level. 00084 min_ratio_policy = 00085 this->orb_core_.get_cached_policy (TAO_CACHED_MIN_COMPRESSION_RATIO_POLICY); 00086 00087 if (!CORBA::is_nil (min_ratio_policy.in ())) 00088 { 00089 // If so, we'll use that policy. 00090 policies.set_policy (min_ratio_policy.in ()); 00091 } 00092 } 00093 00094 // Check if the user has specified the compression list policy. 00095 CORBA::Policy_var compressior_list_policy = 00096 policies.get_cached_policy (TAO_CACHED_COMPRESSION_ID_LEVEL_LIST_POLICY); 00097 00098 if (CORBA::is_nil (compressior_list_policy.in ())) 00099 { 00100 // If not, check if the compression list policy has been 00101 // specified at the ORB level. 00102 compressior_list_policy = 00103 this->orb_core_.get_cached_policy (TAO_CACHED_COMPRESSION_ID_LEVEL_LIST_POLICY); 00104 00105 if (!CORBA::is_nil (compressior_list_policy.in ())) 00106 { 00107 // If so, we'll use that policy. 00108 policies.set_policy (compressior_list_policy.in ()); 00109 } 00110 } 00111 } 00112 00113 CORBA::Boolean 00114 TAO_ZIOPPolicy_Validator::legal_policy_impl (CORBA::PolicyType type) 00115 { 00116 return (type == ZIOP::COMPRESSION_ENABLING_POLICY_ID || 00117 type == ZIOP::COMPRESSION_LOW_VALUE_POLICY_ID || 00118 type == ZIOP::COMPRESSION_MIN_RATIO_POLICY_ID || 00119 type == ZIOP::COMPRESSOR_ID_LEVEL_LIST_POLICY_ID); 00120 } 00121 00122 TAO_END_VERSIONED_NAMESPACE_DECL 00123 00124 #endif