diff options
Diffstat (limited to 'cpp/src/Ice/ObjectAdapterI.cpp')
-rw-r--r-- | cpp/src/Ice/ObjectAdapterI.cpp | 24 |
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()) { |