summaryrefslogtreecommitdiff
path: root/TAO/orbsvcs/orbsvcs/FaultTolerance/FT_ClientPolicyFactory.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'TAO/orbsvcs/orbsvcs/FaultTolerance/FT_ClientPolicyFactory.cpp')
-rwxr-xr-xTAO/orbsvcs/orbsvcs/FaultTolerance/FT_ClientPolicyFactory.cpp34
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