Go to the documentation of this file.00001
00002
00003 #include "tao/EndpointPolicy/Endpoint_Acceptor_Filter_Factory.h"
00004 #include "tao/EndpointPolicy/Endpoint_Acceptor_Filter.h"
00005 #include "tao/PortableServer/Default_Acceptor_Filter.h"
00006 #include "tao/PortableServer/POAManager.h"
00007 #include "tao/EndpointPolicy/EndpointPolicyC.h"
00008
00009 ACE_RCSID(EndpointPolicy,
00010 Endpoint_Acceptor_Filter_Factory,
00011 "$Id: Endpoint_Acceptor_Filter_Factory.cpp 84281 2009-01-30 15:01:17Z wotte $")
00012
00013
00014 TAO_BEGIN_VERSIONED_NAMESPACE_DECL
00015
00016
00017 TAO_Endpoint_Acceptor_Filter_Factory::~TAO_Endpoint_Acceptor_Filter_Factory(void)
00018 {
00019 }
00020
00021 TAO_Acceptor_Filter*
00022 TAO_Endpoint_Acceptor_Filter_Factory::create_object (TAO_POA_Manager& poamanager)
00023 {
00024 CORBA::PolicyList& policies = poamanager.get_policies ();
00025
00026 EndpointPolicy::EndpointList endpoints;
00027 TAO_Acceptor_Filter* filter = 0;
00028
00029 for (CORBA::ULong i = 0; i < policies.length(); ++i)
00030 {
00031 if (policies[i]->policy_type() == EndpointPolicy::ENDPOINT_POLICY_TYPE)
00032 {
00033 EndpointPolicy::Policy_var cur_policy = EndpointPolicy::Policy::_narrow (policies[i]);
00034 if (CORBA::is_nil (cur_policy.in ()))
00035 return 0;
00036
00037 EndpointPolicy::EndpointList_var cur_endpoints = cur_policy->value ();
00038 CORBA::ULong cur_num_endpoints = cur_endpoints->length ();
00039
00040 CORBA::ULong num_endpoints = endpoints.length ();
00041 endpoints.length (num_endpoints + cur_num_endpoints);
00042
00043 for (CORBA::ULong ii = 0; ii < cur_num_endpoints; ++ii)
00044 {
00045 endpoints[num_endpoints + ii] = cur_endpoints[ii];
00046 }
00047 }
00048 }
00049
00050 if (endpoints.length () > 0)
00051 ACE_NEW_RETURN (filter,
00052 TAO_Endpoint_Acceptor_Filter (endpoints),
00053 0);
00054 else
00055
00056 ACE_NEW_RETURN (filter,
00057 TAO_Default_Acceptor_Filter (),
00058 0);
00059
00060 return filter;
00061 }
00062
00063
00064
00065 ACE_FACTORY_DEFINE (TAO_EndpointPolicy, TAO_Endpoint_Acceptor_Filter_Factory)
00066 ACE_STATIC_SVC_DEFINE (TAO_Endpoint_Acceptor_Filter_Factory,
00067 ACE_TEXT ("TAO_Acceptor_Filter_Factory"),
00068 ACE_SVC_OBJ_T,
00069 &ACE_SVC_NAME (TAO_Endpoint_Acceptor_Filter_Factory),
00070 ACE_Service_Type::DELETE_THIS
00071 | ACE_Service_Type::DELETE_OBJ,
00072 0)
00073 TAO_END_VERSIONED_NAMESPACE_DECL