diff options
author | Ossama Othman <ossama-othman@users.noreply.github.com> | 2000-10-23 10:03:19 +0000 |
---|---|---|
committer | Ossama Othman <ossama-othman@users.noreply.github.com> | 2000-10-23 10:03:19 +0000 |
commit | babcb84bcef67a0718b81b23caf4593afb5ba4c6 (patch) | |
tree | ae0eb6fa77b9d9753e97f55b09c48731e3f807d8 /TAO/tao/Messaging_PolicyFactory.cpp | |
parent | 79ee5b3d7d05d1a6311cc8aacaa2e47159188f6b (diff) | |
download | ATCD-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.cpp | 86 |
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 */ |