Go to the documentation of this file.00001 #include "tao/RTCORBA/RT_PolicyFactory.h"
00002
00003 #if defined (TAO_HAS_CORBA_MESSAGING) && TAO_HAS_CORBA_MESSAGING != 0
00004
00005 ACE_RCSID (RTCORBA,
00006 RT_PolicyFactory,
00007 "$Id: RT_PolicyFactory.cpp 82354 2008-07-22 11:34:18Z johnnyw $")
00008
00009 #include "tao/RTCORBA/RT_Policy_i.h"
00010
00011 #include "tao/PolicyC.h"
00012 #include "tao/ORB_Constants.h"
00013
00014 TAO_BEGIN_VERSIONED_NAMESPACE_DECL
00015
00016 CORBA::Policy_ptr
00017 TAO_RT_PolicyFactory::create_policy (
00018 CORBA::PolicyType type,
00019 const CORBA::Any &value)
00020 {
00021 switch (type)
00022 {
00023 case RTCORBA::PRIORITY_MODEL_POLICY_TYPE :
00024 return TAO_PriorityModelPolicy::create (value);
00025 case RTCORBA::THREADPOOL_POLICY_TYPE :
00026 return TAO_ThreadpoolPolicy::create (value);
00027 case RTCORBA::SERVER_PROTOCOL_POLICY_TYPE :
00028 return TAO_ServerProtocolPolicy::create (value);
00029 case RTCORBA::CLIENT_PROTOCOL_POLICY_TYPE :
00030 return TAO_ClientProtocolPolicy::create (value);
00031 case RTCORBA::PRIVATE_CONNECTION_POLICY_TYPE :
00032 return TAO_PrivateConnectionPolicy::create (value);
00033 case RTCORBA::PRIORITY_BANDED_CONNECTION_POLICY_TYPE :
00034 return TAO_PriorityBandedConnectionPolicy::create (value);
00035 }
00036
00037 throw ::CORBA::PolicyError (CORBA::BAD_POLICY_TYPE);
00038 }
00039
00040 CORBA::Policy_ptr
00041 TAO_RT_PolicyFactory::_create_policy (CORBA::PolicyType type)
00042 {
00043 CORBA::Policy_ptr policy = CORBA::Policy_ptr ();
00044
00045 switch (type)
00046 {
00047 case RTCORBA::PRIORITY_MODEL_POLICY_TYPE :
00048 {
00049 ACE_NEW_THROW_EX (policy,
00050 TAO_PriorityModelPolicy,
00051 CORBA::NO_MEMORY (
00052 CORBA::SystemException::_tao_minor_code (
00053 TAO::VMCID,
00054 ENOMEM),
00055 CORBA::COMPLETED_NO));
00056
00057 return policy;
00058 }
00059 break;
00060 case RTCORBA::PRIORITY_BANDED_CONNECTION_POLICY_TYPE :
00061 {
00062 ACE_NEW_THROW_EX (policy,
00063 TAO_PriorityBandedConnectionPolicy,
00064 CORBA::NO_MEMORY (
00065 CORBA::SystemException::_tao_minor_code (
00066 TAO::VMCID,
00067 ENOMEM),
00068 CORBA::COMPLETED_NO));
00069
00070 return policy;
00071 }
00072 break;
00073 case RTCORBA::CLIENT_PROTOCOL_POLICY_TYPE :
00074 {
00075 ACE_NEW_THROW_EX (policy,
00076 TAO_ClientProtocolPolicy,
00077 CORBA::NO_MEMORY (
00078 CORBA::SystemException::_tao_minor_code (
00079 TAO::VMCID,
00080 ENOMEM),
00081 CORBA::COMPLETED_NO));
00082
00083 return policy;
00084 }
00085 break;
00086 }
00087
00088 throw ::CORBA::PolicyError (CORBA::BAD_POLICY_TYPE);
00089 }
00090
00091 TAO_END_VERSIONED_NAMESPACE_DECL
00092
00093 #endif