diff options
Diffstat (limited to 'TAO/orbsvcs/orbsvcs/FaultTolerance/FT_ClientPolicyFactory.cpp')
-rwxr-xr-x | TAO/orbsvcs/orbsvcs/FaultTolerance/FT_ClientPolicyFactory.cpp | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/TAO/orbsvcs/orbsvcs/FaultTolerance/FT_ClientPolicyFactory.cpp b/TAO/orbsvcs/orbsvcs/FaultTolerance/FT_ClientPolicyFactory.cpp new file mode 100755 index 00000000000..852e1c2c97b --- /dev/null +++ b/TAO/orbsvcs/orbsvcs/FaultTolerance/FT_ClientPolicyFactory.cpp @@ -0,0 +1,34 @@ +// $Id$ + +#include "orbsvcs/FaultTolerance/FT_ClientPolicyFactory.h" +#include "orbsvcs/FaultTolerance/FT_ClientPolicy_i.h" +#include "orbsvcs/FT_CORBA_ORBC.h" +#include "tao/PolicyC.h" + +ACE_RCSID (FaultTolerance, + FT_ClientPolicyFactory, + "$Id$") + +TAO_BEGIN_VERSIONED_NAMESPACE_DECL + +CORBA::Policy_ptr +TAO_FT_ClientPolicyFactory::create_policy ( + CORBA::PolicyType type, + const CORBA::Any &val + ACE_ENV_ARG_DECL) + ACE_THROW_SPEC ((CORBA::SystemException, + CORBA::PolicyError)) +{ + + if (type == FT::REQUEST_DURATION_POLICY) + return TAO_FT_Request_Duration_Policy::create (val + ACE_ENV_ARG_PARAMETER); + else if (type == FT::HEARTBEAT_POLICY) + return TAO_FT_Heart_Beat_Policy::create (val + ACE_ENV_ARG_PARAMETER); + + ACE_THROW_RETURN (CORBA::PolicyError (CORBA::BAD_POLICY_TYPE), + CORBA::Policy::_nil ()); +} + +TAO_END_VERSIONED_NAMESPACE_DECL |