summaryrefslogtreecommitdiff
path: root/TAO/tao/Messaging_PolicyFactory.cpp
diff options
context:
space:
mode:
authorOssama Othman <ossama-othman@users.noreply.github.com>2000-10-23 10:03:19 +0000
committerOssama Othman <ossama-othman@users.noreply.github.com>2000-10-23 10:03:19 +0000
commitbabcb84bcef67a0718b81b23caf4593afb5ba4c6 (patch)
treeae0eb6fa77b9d9753e97f55b09c48731e3f807d8 /TAO/tao/Messaging_PolicyFactory.cpp
parent79ee5b3d7d05d1a6311cc8aacaa2e47159188f6b (diff)
downloadATCD-babcb84bcef67a0718b81b23caf4593afb5ba4c6.tar.gz
ChangeLogTag:Mon Oct 23 02:49:25 2000 Ossama Othman <ossama@uci.edu>
Diffstat (limited to 'TAO/tao/Messaging_PolicyFactory.cpp')
-rw-r--r--TAO/tao/Messaging_PolicyFactory.cpp86
1 files changed, 86 insertions, 0 deletions
diff --git a/TAO/tao/Messaging_PolicyFactory.cpp b/TAO/tao/Messaging_PolicyFactory.cpp
new file mode 100644
index 00000000000..a28176f09d5
--- /dev/null
+++ b/TAO/tao/Messaging_PolicyFactory.cpp
@@ -0,0 +1,86 @@
+// -*- C++ -*-
+//
+// $Id$
+
+#include "tao/Messaging_PolicyFactory.h"
+
+ACE_RCSID (tao, Messaging_PolicyFactory, "$Id$")
+
+#if TAO_HAS_CORBA_MESSAGING == 1
+
+#include "tao/PolicyC.h"
+#include "tao/Messaging_Policy_i.h"
+#include "tao/Buffering_Constraint_Policy.h"
+#include "tao/Client_Priority_Policy.h"
+
+CORBA::Policy_ptr
+TAO_Messaging_PolicyFactory::create_policy (
+ CORBA::PolicyType type,
+ const CORBA::Any &value
+ TAO_ENV_ARG_DECL)
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ CORBA::PolicyError))
+{
+ TAO_ENV_ARG_DEFN;
+
+ CORBA::Policy_ptr policy = CORBA::Policy::_nil ();
+
+ switch (type)
+ {
+
+#if (TAO_HAS_RELATIVE_ROUNDTRIP_TIMEOUT_POLICY == 1)
+
+ case TAO_MESSAGING_RELATIVE_RT_TIMEOUT_POLICY_TYPE:
+ return TAO_RelativeRoundtripTimeoutPolicy::create (
+ value
+ TAO_ENV_ARG_PARAMETER);
+
+#endif /* TAO_HAS_RELATIVE_ROUNDTRIP_TIMEOUT_POLICY == 1 */
+
+#if (TAO_HAS_CLIENT_PRIORITY_POLICY == 1)
+
+ case TAO_CLIENT_PRIORITY_POLICY_TYPE:
+ return TAO_Client_Priority_Policy::create (value
+ TAO_ENV_ARG_PARAMETER);
+
+#endif /* TAO_HAS_CLIENT_PRIORITY_POLICY == 1 */
+
+#if (TAO_HAS_SYNC_SCOPE_POLICY == 1)
+
+ case TAO_MESSAGING_SYNC_SCOPE_POLICY_TYPE:
+ return TAO_Sync_Scope_Policy::create (value
+ TAO_ENV_ARG_PARAMETER);
+
+#endif /* TAO_HAS_SYNC_SCOPE_POLICY == 1 */
+
+#if (TAO_HAS_BUFFERING_CONSTRAINT_POLICY == 1)
+
+ case TAO_BUFFERING_CONSTRAINT_POLICY_TYPE:
+ return TAO_Buffering_Constraint_Policy::create (value
+ TAO_ENV_ARG_PARAMETER);
+
+#endif /* TAO_HAS_BUFFERING_CONSTRAINT_POLICY == 1 */
+
+ case TAO_MESSAGING_REBIND_POLICY_TYPE:
+ case TAO_MESSAGING_REQUEST_PRIORITY_POLICY_TYPE:
+ case TAO_MESSAGING_REPLY_PRIORITY_POLICY_TYPE:
+ case TAO_MESSAGING_REQUEST_START_TIME_POLICY_TYPE:
+ case TAO_MESSAGING_REQUEST_END_TIME_POLICY_TYPE:
+ case TAO_MESSAGING_REPLY_START_TIME_POLICY_TYPE:
+ case TAO_MESSAGING_REPLY_END_TIME_POLICY_TYPE:
+ case TAO_MESSAGING_RELATIVE_REQ_TIMEOUT_POLICY_TYPE:
+ case TAO_MESSAGING_ROUTING_POLICY_TYPE:
+ case TAO_MESSAGING_MAX_HOPS_POLICY_TYPE:
+ case TAO_MESSAGING_QUEUE_ORDER_POLICY_TYPE:
+ ACE_THROW_RETURN (CORBA::PolicyError (CORBA::UNSUPPORTED_POLICY),
+ CORBA::Policy::_nil ());
+
+ default:
+ break;
+ }
+
+ ACE_THROW_RETURN (CORBA::PolicyError (CORBA::BAD_POLICY_TYPE),
+ CORBA::Policy::_nil ());
+}
+
+#endif /* TAO_HAS_CORBA_MESSAGING == 1 */