00001 #include "tao/BiDir_GIOP/BiDirPolicy_Validator.h" 00002 #include "tao/BiDir_GIOP/BiDir_Policy_i.h" 00003 #include "tao/Policy_Set.h" 00004 #include "tao/ORB_Core.h" 00005 00006 ACE_RCSID (BiDir_GIOP, 00007 BiDirPolicy_Validator, 00008 "$Id: BiDirPolicy_Validator.cpp 82353 2008-07-22 10:12:29Z johnnyw $") 00009 00010 TAO_BEGIN_VERSIONED_NAMESPACE_DECL 00011 00012 TAO_BiDirPolicy_Validator::TAO_BiDirPolicy_Validator (TAO_ORB_Core &orb_core) 00013 : TAO_Policy_Validator (orb_core) 00014 { 00015 } 00016 00017 00018 void 00019 TAO_BiDirPolicy_Validator::validate_impl (TAO_Policy_Set &policies) 00020 { 00021 CORBA::Policy_var policy = 00022 policies.get_cached_policy (TAO_CACHED_POLICY_BIDIRECTIONAL_GIOP); 00023 00024 if (CORBA::is_nil (policy.in ())) 00025 return; 00026 00027 BiDirPolicy::BidirectionalPolicy_var srp = 00028 BiDirPolicy::BidirectionalPolicy::_narrow (policy.in ()); 00029 00030 if (CORBA::is_nil (srp.in ())) 00031 return; 00032 00033 BiDirPolicy::BidirectionalPolicyValue val = srp->value (); 00034 00035 // Set the flag in the ORB_Core 00036 if (val == BiDirPolicy::BOTH) 00037 orb_core_.bidir_giop_policy (true); 00038 } 00039 00040 void 00041 TAO_BiDirPolicy_Validator::merge_policies_impl (TAO_Policy_Set &) 00042 { 00043 } 00044 00045 CORBA::Boolean 00046 TAO_BiDirPolicy_Validator::legal_policy_impl (CORBA::PolicyType type) 00047 { 00048 return (type == BiDirPolicy::BIDIRECTIONAL_POLICY_TYPE); 00049 } 00050 00051 TAO_END_VERSIONED_NAMESPACE_DECL