blob: 13b1dba968d99b1933737075431574a1995771e9 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
|
// -*- C++ -*-
#include "tao/EndpointPolicy/Endpoint_Acceptor_Filter_Factory.h"
#include "tao/EndpointPolicy/Endpoint_Acceptor_Filter.h"
#include "tao/PortableServer/Default_Acceptor_Filter.h"
#include "tao/PortableServer/POAManager.h"
#include "tao/EndpointPolicy/EndpointPolicyC.h"
TAO_BEGIN_VERSIONED_NAMESPACE_DECL
TAO_Endpoint_Acceptor_Filter_Factory::~TAO_Endpoint_Acceptor_Filter_Factory()
{
}
TAO_Acceptor_Filter*
TAO_Endpoint_Acceptor_Filter_Factory::create_object (TAO_POA_Manager& poamanager)
{
CORBA::PolicyList& policies = poamanager.get_policies ();
EndpointPolicy::EndpointList endpoints;
TAO_Acceptor_Filter* filter = 0;
for (CORBA::ULong i = 0; i < policies.length(); ++i)
{
if (policies[i]->policy_type() == EndpointPolicy::ENDPOINT_POLICY_TYPE)
{
EndpointPolicy::Policy_var cur_policy = EndpointPolicy::Policy::_narrow (policies[i]);
if (CORBA::is_nil (cur_policy.in ()))
return 0;
EndpointPolicy::EndpointList_var cur_endpoints = cur_policy->value ();
CORBA::ULong cur_num_endpoints = cur_endpoints->length ();
CORBA::ULong num_endpoints = endpoints.length ();
endpoints.length (num_endpoints + cur_num_endpoints);
for (CORBA::ULong ii = 0; ii < cur_num_endpoints; ++ii)
{
endpoints[num_endpoints + ii] = cur_endpoints[ii];
}
}
}
if (endpoints.length () > 0)
ACE_NEW_RETURN (filter,
TAO_Endpoint_Acceptor_Filter (endpoints),
0);
else
// no policy was in force, just return a default filter
ACE_NEW_RETURN (filter,
TAO_Default_Acceptor_Filter (),
0);
return filter;
}
ACE_FACTORY_DEFINE (TAO_EndpointPolicy, TAO_Endpoint_Acceptor_Filter_Factory)
ACE_STATIC_SVC_DEFINE (TAO_Endpoint_Acceptor_Filter_Factory,
ACE_TEXT ("TAO_Acceptor_Filter_Factory"),
ACE_SVC_OBJ_T,
&ACE_SVC_NAME (TAO_Endpoint_Acceptor_Filter_Factory),
ACE_Service_Type::DELETE_THIS
| ACE_Service_Type::DELETE_OBJ,
0)
TAO_END_VERSIONED_NAMESPACE_DECL
|