summaryrefslogtreecommitdiff
path: root/TAO/tao/BiDir_GIOP/BiDir_Policy_i.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'TAO/tao/BiDir_GIOP/BiDir_Policy_i.cpp')
-rw-r--r--TAO/tao/BiDir_GIOP/BiDir_Policy_i.cpp94
1 files changed, 94 insertions, 0 deletions
diff --git a/TAO/tao/BiDir_GIOP/BiDir_Policy_i.cpp b/TAO/tao/BiDir_GIOP/BiDir_Policy_i.cpp
new file mode 100644
index 00000000000..71f2fa359d3
--- /dev/null
+++ b/TAO/tao/BiDir_GIOP/BiDir_Policy_i.cpp
@@ -0,0 +1,94 @@
+// $Id$
+
+#include "tao/BiDir_GIOP/BiDir_Policy_i.h"
+
+#include "tao/Stub.h"
+#include "tao/debug.h"
+#include "tao/ORB_Constants.h"
+
+ACE_RCSID (BiDir_GIOP,
+ BiDir_Policy_i,
+ "$Id$")
+
+TAO_BEGIN_VERSIONED_NAMESPACE_DECL
+
+TAO_BidirectionalPolicy::TAO_BidirectionalPolicy (
+ const BiDirPolicy::BidirectionalPolicyValue val)
+ : ::CORBA::Object ()
+ , ::CORBA::Policy ()
+ , ::BiDirPolicy::BidirectionalPolicy ()
+ , ::CORBA::LocalObject ()
+ , TAO_Local_RefCounted_Object ()
+ , value_ (val)
+{
+}
+
+TAO_BidirectionalPolicy::TAO_BidirectionalPolicy (const TAO_BidirectionalPolicy &rhs)
+ : ::CORBA::Object ()
+ , ::CORBA::Policy ()
+ , ::BiDirPolicy::BidirectionalPolicy ()
+ , ::CORBA::LocalObject ()
+ , TAO_Local_RefCounted_Object ()
+ , value_ (rhs.value_)
+{
+}
+
+CORBA::PolicyType
+TAO_BidirectionalPolicy::policy_type (ACE_ENV_SINGLE_ARG_DECL_NOT_USED)
+ ACE_THROW_SPEC ((CORBA::SystemException))
+{
+ // Future policy implementors: notice how this minimizes the
+ // footprint of the class.
+ return BiDirPolicy::BIDIRECTIONAL_POLICY_TYPE;
+}
+
+
+TAO_BidirectionalPolicy *
+TAO_BidirectionalPolicy::clone (void) const
+{
+ TAO_BidirectionalPolicy *copy = 0;
+ ACE_NEW_RETURN (copy,
+ TAO_BidirectionalPolicy (*this),
+ 0);
+ return copy;
+}
+
+CORBA::Policy_ptr
+TAO_BidirectionalPolicy::copy (ACE_ENV_SINGLE_ARG_DECL)
+ ACE_THROW_SPEC ((CORBA::SystemException))
+{
+ // Future policy implementors: notice how the following code is
+ // exception safe!
+
+ TAO_BidirectionalPolicy* tmp;
+ ACE_NEW_THROW_EX (tmp, TAO_BidirectionalPolicy (*this),
+ CORBA::NO_MEMORY (TAO::VMCID,
+ CORBA::COMPLETED_NO));
+ ACE_CHECK_RETURN (CORBA::Policy::_nil ());
+
+ return tmp;
+}
+
+void
+TAO_BidirectionalPolicy::destroy (ACE_ENV_SINGLE_ARG_DECL_NOT_USED)
+ ACE_THROW_SPEC ((CORBA::SystemException))
+{
+}
+
+BiDirPolicy::BidirectionalPolicyValue
+TAO_BidirectionalPolicy::value (
+ ACE_ENV_SINGLE_ARG_DECL_NOT_USED)
+ ACE_THROW_SPEC ((
+ CORBA::SystemException))
+{
+ return this->value_;
+}
+
+
+TAO_Cached_Policy_Type
+TAO_BidirectionalPolicy::_tao_cached_type (void) const
+{
+ return TAO_CACHED_POLICY_BIDIRECTIONAL_GIOP;
+}
+
+TAO_END_VERSIONED_NAMESPACE_DECL