summaryrefslogtreecommitdiff
path: root/TAO/tao/EndpointPolicy/EndpointPolicy_Factory.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'TAO/tao/EndpointPolicy/EndpointPolicy_Factory.cpp')
-rw-r--r--TAO/tao/EndpointPolicy/EndpointPolicy_Factory.cpp95
1 files changed, 47 insertions, 48 deletions
diff --git a/TAO/tao/EndpointPolicy/EndpointPolicy_Factory.cpp b/TAO/tao/EndpointPolicy/EndpointPolicy_Factory.cpp
index 56161ad79be..b5f87c7500f 100644
--- a/TAO/tao/EndpointPolicy/EndpointPolicy_Factory.cpp
+++ b/TAO/tao/EndpointPolicy/EndpointPolicy_Factory.cpp
@@ -22,7 +22,7 @@ TAO_BEGIN_VERSIONED_NAMESPACE_DECL
TAO_EndpointPolicy_Factory::TAO_EndpointPolicy_Factory (TAO_ORB_Core * orb_core)
-: orb_core_ (orb_core)
+ : orb_core_ (orb_core)
{
}
@@ -30,63 +30,62 @@ TAO_EndpointPolicy_Factory::TAO_EndpointPolicy_Factory (TAO_ORB_Core * orb_core)
CORBA::Policy_ptr
TAO_EndpointPolicy_Factory::create_policy (
CORBA::PolicyType type,
- const CORBA::Any &value
- )
- ACE_THROW_SPEC ((CORBA::SystemException,
- CORBA::PolicyError))
+ const CORBA::Any &value)
{
if (type == EndpointPolicy::ENDPOINT_POLICY_TYPE)
- {
- const EndpointPolicy::EndpointList* endpoint_list;
- if ((value >>= endpoint_list) == 0)
- ACE_THROW_RETURN (CORBA::PolicyError (CORBA::BAD_POLICY_VALUE),
- CORBA::Policy::_nil ());
-
- TAO_Acceptor_Registry & registry
- = this->orb_core_->lane_resources ().acceptor_registry ();
-
- TAO_Acceptor ** acceptors_begin = registry.begin ();
- TAO_Acceptor ** acceptors_end = registry.end ();
- CORBA::ULong num_eps = endpoint_list->length ();
+ {
+ const EndpointPolicy::EndpointList* endpoint_list;
+ if (!(value >>= endpoint_list))
+ throw ::CORBA::PolicyError (CORBA::BAD_POLICY_VALUE);
- // The endpoint list in the value is validated to ensure that
- // at least one endpoint in the list matches an endpoint the
- // ORB is listening on.
+ TAO_Acceptor_Registry & registry =
+ this->orb_core_->lane_resources ().acceptor_registry ();
- bool found_one = false;
- for (CORBA::ULong idx = 0; !found_one && idx < num_eps; ++idx)
- {
- CORBA::ULong prot_tag = (*endpoint_list)[idx]->protocol_tag();
+ TAO_Acceptor ** const acceptors_begin = registry.begin ();
+ TAO_Acceptor ** const acceptors_end = registry.end ();
+ CORBA::ULong const num_eps = endpoint_list->length ();
- const TAO_Endpoint_Value_Impl *evi =
- dynamic_cast <const TAO_Endpoint_Value_Impl*> ((*endpoint_list)[idx]);
+ // The endpoint list in the value is validated to ensure that
+ // at least one endpoint in the list matches an endpoint the
+ // ORB is listening on.
- for (TAO_Acceptor** acceptor = acceptors_begin;
- !found_one && acceptor != acceptors_end;
- ++acceptor)
+ bool found_one = false;
+ for (CORBA::ULong idx = 0; !found_one && idx < num_eps; ++idx)
{
- if ((*acceptor)->tag() == prot_tag)
- found_one = evi->validate_acceptor(*acceptor);
+ CORBA::ULong prot_tag = (*endpoint_list)[idx]->protocol_tag();
+
+ TAO_Endpoint_Value_Impl const * const evi =
+ dynamic_cast <TAO_Endpoint_Value_Impl const *> (
+ (*endpoint_list)[idx]);
+
+ if (!evi)
+ continue;
+
+ for (TAO_Acceptor** acceptor = acceptors_begin;
+ !found_one && acceptor != acceptors_end;
+ ++acceptor)
+ {
+ if ((*acceptor)->tag () == prot_tag)
+ found_one = evi->validate_acceptor (*acceptor);
+ }
}
+
+ // There is no endpoint policy value matches an endpoint the ORB
+ // is listening on. A CORBA::PolicyError exception with a
+ // PolicyErrorCode of UNSUPPORTED_POLICY_VALUE is raised.
+ if (!found_one)
+ throw ::CORBA::PolicyError (CORBA::UNSUPPORTED_POLICY_VALUE);
+
+ TAO_EndpointPolicy_i *tmp = 0;
+ ACE_NEW_THROW_EX (tmp,
+ TAO_EndpointPolicy_i (*endpoint_list),
+ CORBA::NO_MEMORY (TAO::VMCID,
+ CORBA::COMPLETED_NO));
+
+ return tmp;
}
- // There is no endpoint policy value matches an endpoint the ORB
- // is listening on. A CORBA::PolicyError exception with a
- // PolicyErrorCode of UNSUPPORTED_POLICY_VALUE is raised.
- if (!found_one)
- ACE_THROW_RETURN (CORBA::PolicyError (CORBA::UNSUPPORTED_POLICY_VALUE),
- CORBA::Policy::_nil ());
-
- TAO_EndpointPolicy_i *tmp;
- ACE_NEW_THROW_EX (tmp,
- TAO_EndpointPolicy_i (*endpoint_list),
- CORBA::NO_MEMORY (TAO::VMCID,
- CORBA::COMPLETED_NO));
-
- return tmp;
- }
else
- ACE_THROW_RETURN (CORBA::PolicyError (CORBA::BAD_POLICY_TYPE),
- CORBA::Policy::_nil ());
+ throw ::CORBA::PolicyError (CORBA::BAD_POLICY_TYPE);
}