summaryrefslogtreecommitdiff
path: root/cpp/src/Ice/ObjectAdapterI.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'cpp/src/Ice/ObjectAdapterI.cpp')
-rw-r--r--cpp/src/Ice/ObjectAdapterI.cpp24
1 files changed, 18 insertions, 6 deletions
diff --git a/cpp/src/Ice/ObjectAdapterI.cpp b/cpp/src/Ice/ObjectAdapterI.cpp
index a1f207f7282..e13c958935f 100644
--- a/cpp/src/Ice/ObjectAdapterI.cpp
+++ b/cpp/src/Ice/ObjectAdapterI.cpp
@@ -365,6 +365,7 @@ Ice::ObjectAdapterI::destroy()
_routerInfo = 0;
_publishedEndpoints.clear();
_locatorInfo = 0;
+ _connectors.clear();
objectAdapterFactory = _objectAdapterFactory;
_objectAdapterFactory = 0;
@@ -582,6 +583,14 @@ Ice::ObjectAdapterI::refreshPublishedEndpoints()
oldPublishedEndpoints = _publishedEndpoints;
_publishedEndpoints = parsePublishedEndpoints();
+ _connectors.clear();
+ vector<IncomingConnectionFactoryPtr>::const_iterator p;
+ for(p = _incomingConnectionFactories.begin(); p != _incomingConnectionFactories.end(); ++p)
+ {
+ vector<ConnectorPtr> cons = (*p)->endpoint()->connectors();
+ _connectors.insert(_connectors.end(), cons.begin(), cons.end());
+ }
+
locatorInfo = _locatorInfo;
if(!_noConfig)
{
@@ -651,15 +660,14 @@ Ice::ObjectAdapterI::isLocal(const ObjectPrx& proxy) const
//
// Proxies which have at least one endpoint in common with the
- // endpoints used by this object adapter's incoming connection
- // factories are considered local.
+ // endpoints used by this object adapter are considered local.
//
for(p = endpoints.begin(); p != endpoints.end(); ++p)
{
- vector<IncomingConnectionFactoryPtr>::const_iterator q;
- for(q = _incomingConnectionFactories.begin(); q != _incomingConnectionFactories.end(); ++q)
+ vector<ConnectorPtr>::const_iterator q;
+ for(q = _connectors.begin(); q != _connectors.end(); ++q)
{
- if((*q)->equivalent(*p))
+ if((*p)->equivalent(*q))
{
return true;
}
@@ -927,7 +935,11 @@ Ice::ObjectAdapterI::ObjectAdapterI(const InstancePtr& instance, const Communica
}
for(vector<EndpointIPtr>::iterator p = endpoints.begin(); p != endpoints.end(); ++p)
{
- _incomingConnectionFactories.push_back(new IncomingConnectionFactory(instance, *p, this, _name));
+ IncomingConnectionFactoryPtr factory = new IncomingConnectionFactory(instance, *p, this, _name);
+ _incomingConnectionFactories.push_back(factory);
+
+ vector<ConnectorPtr> cons = factory->endpoint()->connectors();
+ _connectors.insert(_connectors.end(), cons.begin(), cons.end());
}
if(endpoints.empty())
{