// -*- C++ -*- // // $Id$ #include "tao/BiDir_PolicyFactory.h" #include "tao/BiDirPolicyC.h" #include "tao/BiDir_Policy_i.h" ACE_RCSID (tao, BiDir_PolicyFactory, "$Id$") CORBA::Policy_ptr TAO_BiDir_PolicyFactory::create_policy ( CORBA::PolicyType type, const CORBA::Any &value TAO_ENV_ARG_DECL) ACE_THROW_SPEC ((CORBA::SystemException, CORBA::PolicyError)) { CORBA::Policy_ptr policy = CORBA::Policy::_nil (); TAO_ENV_ARG_DEFN; if (type == BiDirPolicy::BIDIRECTIONAL_POLICY_TYPE) { BiDirPolicy::BidirectionalPolicyValue val; // Extract the value from the any value >>= val; ACE_NEW_THROW_EX (policy, TAO_BidirectionalPolicy (val), CORBA::NO_MEMORY ( CORBA_SystemException::_tao_minor_code ( TAO_DEFAULT_MINOR_CODE, ENOMEM), CORBA::COMPLETED_NO)); ACE_CHECK_RETURN (CORBA::Policy::_nil ()); return policy; } ACE_THROW_RETURN (CORBA::PolicyError (CORBA::BAD_POLICY_TYPE), CORBA::Policy::_nil ()); }