diff options
Diffstat (limited to 'cpp/src/Ice/LocatorInfo.cpp')
-rw-r--r-- | cpp/src/Ice/LocatorInfo.cpp | 436 |
1 files changed, 218 insertions, 218 deletions
diff --git a/cpp/src/Ice/LocatorInfo.cpp b/cpp/src/Ice/LocatorInfo.cpp index 146126f95ab..15e27d67d03 100644 --- a/cpp/src/Ice/LocatorInfo.cpp +++ b/cpp/src/Ice/LocatorInfo.cpp @@ -54,7 +54,7 @@ IceInternal::LocatorManager::get(const LocatorPrx& loc) { if(!loc) { - return 0; + return 0; } LocatorPrx locator = LocatorPrx::uncheckedCast(loc->ice_locator(0)); // The locator can't be located. @@ -69,39 +69,39 @@ IceInternal::LocatorManager::get(const LocatorPrx& loc) if(_tableHint != _table.end()) { - if(_tableHint->first == locator) - { - p = _tableHint; - } + if(_tableHint->first == locator) + { + p = _tableHint; + } } if(p == _table.end()) { - p = _table.find(locator); + p = _table.find(locator); } if(p == _table.end()) { - // - // Rely on locator identity for the adapter table. We want to - // have only one table per locator (not one per locator - // proxy). - // - map<Identity, LocatorTablePtr>::iterator t = _locatorTables.find(locator->ice_getIdentity()); - if(t == _locatorTables.end()) - { - t = _locatorTables.insert(_locatorTables.begin(), - pair<const Identity, LocatorTablePtr>(locator->ice_getIdentity(), - new LocatorTable())); - } - - _tableHint = _table.insert(_tableHint, - pair<const LocatorPrx, LocatorInfoPtr>(locator, - new LocatorInfo(locator, t->second))); + // + // Rely on locator identity for the adapter table. We want to + // have only one table per locator (not one per locator + // proxy). + // + map<Identity, LocatorTablePtr>::iterator t = _locatorTables.find(locator->ice_getIdentity()); + if(t == _locatorTables.end()) + { + t = _locatorTables.insert(_locatorTables.begin(), + pair<const Identity, LocatorTablePtr>(locator->ice_getIdentity(), + new LocatorTable())); + } + + _tableHint = _table.insert(_tableHint, + pair<const LocatorPrx, LocatorInfoPtr>(locator, + new LocatorInfo(locator, t->second))); } else { - _tableHint = p; + _tableHint = p; } return _tableHint->second; @@ -125,7 +125,7 @@ IceInternal::LocatorTable::getAdapterEndpoints(const string& adapter, int ttl, v { if(ttl == 0) // No locator cache. { - return false; + return false; } IceUtil::Mutex::Lock sync(*this); @@ -134,8 +134,8 @@ IceInternal::LocatorTable::getAdapterEndpoints(const string& adapter, int ttl, v if(p != _adapterEndpointsMap.end() && checkTTL(p->second.first, ttl)) { - endpoints = p->second.second; - return true; + endpoints = p->second.second; + return true; } return false; } @@ -149,11 +149,11 @@ IceInternal::LocatorTable::addAdapterEndpoints(const string& adapter, const vect if(p != _adapterEndpointsMap.end()) { - p->second = make_pair(IceUtil::Time::now(), endpoints); + p->second = make_pair(IceUtil::Time::now(), endpoints); } else { - _adapterEndpointsMap.insert(make_pair(adapter, make_pair(IceUtil::Time::now(), endpoints))); + _adapterEndpointsMap.insert(make_pair(adapter, make_pair(IceUtil::Time::now(), endpoints))); } } @@ -165,7 +165,7 @@ IceInternal::LocatorTable::removeAdapterEndpoints(const string& adapter) map<string, pair<IceUtil::Time, vector<EndpointIPtr> > >::iterator p = _adapterEndpointsMap.find(adapter); if(p == _adapterEndpointsMap.end()) { - return vector<EndpointIPtr>(); + return vector<EndpointIPtr>(); } vector<EndpointIPtr> endpoints = p->second.second; @@ -180,7 +180,7 @@ IceInternal::LocatorTable::getProxy(const Identity& id, int ttl, ObjectPrx& prox { if(ttl == 0) // No locator cache { - return false; + return false; } IceUtil::Mutex::Lock sync(*this); @@ -189,8 +189,8 @@ IceInternal::LocatorTable::getProxy(const Identity& id, int ttl, ObjectPrx& prox if(p != _objectMap.end() && checkTTL(p->second.first, ttl)) { - proxy = p->second.second; - return true; + proxy = p->second.second; + return true; } return false; } @@ -204,11 +204,11 @@ IceInternal::LocatorTable::addProxy(const Identity& id, const ObjectPrx& proxy) if(p != _objectMap.end()) { - p->second = make_pair(IceUtil::Time::now(), proxy); + p->second = make_pair(IceUtil::Time::now(), proxy); } else { - _objectMap.insert(make_pair(id, make_pair(IceUtil::Time::now(), proxy))); + _objectMap.insert(make_pair(id, make_pair(IceUtil::Time::now(), proxy))); } } @@ -220,7 +220,7 @@ IceInternal::LocatorTable::removeProxy(const Identity& id) map<Identity, pair<IceUtil::Time, ObjectPrx> >::iterator p = _objectMap.find(id); if(p == _objectMap.end()) { - return 0; + return 0; } ObjectPrx proxy = p->second.second; @@ -234,11 +234,11 @@ IceInternal::LocatorTable::checkTTL(const IceUtil::Time& time, int ttl) const assert(ttl != 0); if (ttl < 0) // TTL = infinite { - return true; + return true; } else { - return IceUtil::Time::now() - time <= IceUtil::Time::seconds(ttl); + return IceUtil::Time::now() - time <= IceUtil::Time::seconds(ttl); } } @@ -293,12 +293,12 @@ IceInternal::LocatorInfo::getLocatorRegistry() if(!_locatorRegistry) // Lazy initialization. { - _locatorRegistry = _locator->getRegistry(); + _locatorRegistry = _locator->getRegistry(); - // - // The locator registry can't be located. - // - _locatorRegistry = LocatorRegistryPrx::uncheckedCast(_locatorRegistry->ice_locator(0)); + // + // The locator registry can't be located. + // + _locatorRegistry = LocatorRegistryPrx::uncheckedCast(_locatorRegistry->ice_locator(0)); } return _locatorRegistry; @@ -312,156 +312,156 @@ IceInternal::LocatorInfo::getEndpoints(const IndirectReferencePtr& ref, int ttl, cached = true; try { - if(!ref->getAdapterId().empty()) - { - if(!_table->getAdapterEndpoints(ref->getAdapterId(), ttl, endpoints)) - { - cached = false; - - if(ref->getInstance()->traceLevels()->location >= 1) - { - Trace out(ref->getInstance()->initializationData().logger, - ref->getInstance()->traceLevels()->locationCat); - out << "searching for adapter by id" << "\n"; - out << "adapter = " << ref->getAdapterId(); - } - - object = _locator->findAdapterById(ref->getAdapterId()); - if(object) - { - endpoints = object->__reference()->getEndpoints(); - _table->addAdapterEndpoints(ref->getAdapterId(), endpoints); - } - } - } - else - { - bool objectCached = true; - if(!_table->getProxy(ref->getIdentity(), ttl, object)) - { - if(ref->getInstance()->traceLevels()->location >= 1) - { - Trace out(ref->getInstance()->initializationData().logger, - ref->getInstance()->traceLevels()->locationCat); - out << "searching for object by id" << "\n"; - out << "object = " << ref->getInstance()->identityToString(ref->getIdentity()); - } - - objectCached = false; - object = _locator->findObjectById(ref->getIdentity()); - } - - bool endpointsCached = true; - if(object) - { - DirectReferencePtr odr = DirectReferencePtr::dynamicCast(object->__reference()); - if(odr) - { - endpointsCached = false; - endpoints = odr->getEndpoints(); - } - else - { - IndirectReferencePtr oir = IndirectReferencePtr::dynamicCast(object->__reference()); - assert(oir); - if(!oir->getAdapterId().empty()) - { - endpoints = getEndpoints(oir, ttl, endpointsCached); - } - } - } - - if(!objectCached && !endpoints.empty()) - { - _table->addProxy(ref->getIdentity(), object); - } - - cached = objectCached || endpointsCached; - } + if(!ref->getAdapterId().empty()) + { + if(!_table->getAdapterEndpoints(ref->getAdapterId(), ttl, endpoints)) + { + cached = false; + + if(ref->getInstance()->traceLevels()->location >= 1) + { + Trace out(ref->getInstance()->initializationData().logger, + ref->getInstance()->traceLevels()->locationCat); + out << "searching for adapter by id" << "\n"; + out << "adapter = " << ref->getAdapterId(); + } + + object = _locator->findAdapterById(ref->getAdapterId()); + if(object) + { + endpoints = object->__reference()->getEndpoints(); + _table->addAdapterEndpoints(ref->getAdapterId(), endpoints); + } + } + } + else + { + bool objectCached = true; + if(!_table->getProxy(ref->getIdentity(), ttl, object)) + { + if(ref->getInstance()->traceLevels()->location >= 1) + { + Trace out(ref->getInstance()->initializationData().logger, + ref->getInstance()->traceLevels()->locationCat); + out << "searching for object by id" << "\n"; + out << "object = " << ref->getInstance()->identityToString(ref->getIdentity()); + } + + objectCached = false; + object = _locator->findObjectById(ref->getIdentity()); + } + + bool endpointsCached = true; + if(object) + { + DirectReferencePtr odr = DirectReferencePtr::dynamicCast(object->__reference()); + if(odr) + { + endpointsCached = false; + endpoints = odr->getEndpoints(); + } + else + { + IndirectReferencePtr oir = IndirectReferencePtr::dynamicCast(object->__reference()); + assert(oir); + if(!oir->getAdapterId().empty()) + { + endpoints = getEndpoints(oir, ttl, endpointsCached); + } + } + } + + if(!objectCached && !endpoints.empty()) + { + _table->addProxy(ref->getIdentity(), object); + } + + cached = objectCached || endpointsCached; + } } catch(const AdapterNotFoundException&) { - if(ref->getInstance()->traceLevels()->location >= 1) - { - Trace out(ref->getInstance()->initializationData().logger, - ref->getInstance()->traceLevels()->locationCat); - out << "adapter not found" << "\n"; - out << "adapter = " << ref->getAdapterId(); + if(ref->getInstance()->traceLevels()->location >= 1) + { + Trace out(ref->getInstance()->initializationData().logger, + ref->getInstance()->traceLevels()->locationCat); + out << "adapter not found" << "\n"; + out << "adapter = " << ref->getAdapterId(); } - NotRegisteredException ex(__FILE__, __LINE__); - ex.kindOfObject = "object adapter"; - ex.id = ref->getAdapterId(); - throw ex; + NotRegisteredException ex(__FILE__, __LINE__); + ex.kindOfObject = "object adapter"; + ex.id = ref->getAdapterId(); + throw ex; } catch(const ObjectNotFoundException&) { - if(ref->getInstance()->traceLevels()->location >= 1) - { - Trace out(ref->getInstance()->initializationData().logger, - ref->getInstance()->traceLevels()->locationCat); - out << "object not found" << "\n"; - out << "object = " << ref->getInstance()->identityToString(ref->getIdentity()); + if(ref->getInstance()->traceLevels()->location >= 1) + { + Trace out(ref->getInstance()->initializationData().logger, + ref->getInstance()->traceLevels()->locationCat); + out << "object not found" << "\n"; + out << "object = " << ref->getInstance()->identityToString(ref->getIdentity()); } - NotRegisteredException ex(__FILE__, __LINE__); - ex.kindOfObject = "object"; - ex.id = ref->getInstance()->identityToString(ref->getIdentity()); - throw ex; + NotRegisteredException ex(__FILE__, __LINE__); + ex.kindOfObject = "object"; + ex.id = ref->getInstance()->identityToString(ref->getIdentity()); + throw ex; } catch(const NotRegisteredException&) { - throw; + throw; } catch(const LocalException& ex) { - if(ref->getInstance()->traceLevels()->location >= 1) - { - Trace out(ref->getInstance()->initializationData().logger, - ref->getInstance()->traceLevels()->locationCat); - out << "couldn't contact the locator to retrieve adapter endpoints\n"; - if(ref->getAdapterId().empty()) - { - out << "object = " << ref->getInstance()->identityToString(ref->getIdentity()) << "\n"; - } - else - { - out << "adapter = " << ref->getAdapterId() << "\n"; - } - out << "reason = " << ex; - } - throw; + if(ref->getInstance()->traceLevels()->location >= 1) + { + Trace out(ref->getInstance()->initializationData().logger, + ref->getInstance()->traceLevels()->locationCat); + out << "couldn't contact the locator to retrieve adapter endpoints\n"; + if(ref->getAdapterId().empty()) + { + out << "object = " << ref->getInstance()->identityToString(ref->getIdentity()) << "\n"; + } + else + { + out << "adapter = " << ref->getAdapterId() << "\n"; + } + out << "reason = " << ex; + } + throw; } if(ref->getInstance()->traceLevels()->location >= 1) { if(!endpoints.empty()) - { - if(cached) - { - trace("found endpoints in locator table", ref, endpoints); - } - else - { - trace("retrieved endpoints from locator, adding to locator table", ref, endpoints); - } - } - else - { - Trace out(ref->getInstance()->initializationData().logger, ref->getInstance()->traceLevels()->locationCat); - out << "no endpoints configured for "; - if(ref->getAdapterId().empty()) - { - out << "object\n"; - out << "object = " << ref->getInstance()->identityToString(ref->getIdentity()); - } - else - { - out << "adapter\n"; - out << "adapter = " << ref->getAdapterId(); - } - } + { + if(cached) + { + trace("found endpoints in locator table", ref, endpoints); + } + else + { + trace("retrieved endpoints from locator, adding to locator table", ref, endpoints); + } + } + else + { + Trace out(ref->getInstance()->initializationData().logger, ref->getInstance()->traceLevels()->locationCat); + out << "no endpoints configured for "; + if(ref->getAdapterId().empty()) + { + out << "object\n"; + out << "object = " << ref->getInstance()->identityToString(ref->getIdentity()); + } + else + { + out << "adapter\n"; + out << "adapter = " << ref->getAdapterId(); + } + } } return endpoints; @@ -472,25 +472,25 @@ IceInternal::LocatorInfo::clearObjectCache(const IndirectReferencePtr& ref) { if(ref->getAdapterId().empty()) { - ObjectPrx object = _table->removeProxy(ref->getIdentity()); - if(object) - { - IndirectReferencePtr oir = IndirectReferencePtr::dynamicCast(object->__reference()); - if(oir) - { - if(!oir->getAdapterId().empty()) - { - clearCache(oir); - } - } - else - { - if(ref->getInstance()->traceLevels()->location >= 2) - { - trace("removed endpoints from locator table", ref, object->__reference()->getEndpoints()); - } - } - } + ObjectPrx object = _table->removeProxy(ref->getIdentity()); + if(object) + { + IndirectReferencePtr oir = IndirectReferencePtr::dynamicCast(object->__reference()); + if(oir) + { + if(!oir->getAdapterId().empty()) + { + clearCache(oir); + } + } + else + { + if(ref->getInstance()->traceLevels()->location >= 2) + { + trace("removed endpoints from locator table", ref, object->__reference()->getEndpoints()); + } + } + } } } @@ -499,56 +499,56 @@ IceInternal::LocatorInfo::clearCache(const IndirectReferencePtr& ref) { if(!ref->getAdapterId().empty()) { - vector<EndpointIPtr> endpoints = _table->removeAdapterEndpoints(ref->getAdapterId()); + vector<EndpointIPtr> endpoints = _table->removeAdapterEndpoints(ref->getAdapterId()); - if(!endpoints.empty() && ref->getInstance()->traceLevels()->location >= 2) - { - trace("removed endpoints from locator table", ref, endpoints); - } + if(!endpoints.empty() && ref->getInstance()->traceLevels()->location >= 2) + { + trace("removed endpoints from locator table", ref, endpoints); + } } else { - ObjectPrx object = _table->removeProxy(ref->getIdentity()); - if(object) - { - IndirectReferencePtr oir = IndirectReferencePtr::dynamicCast(object->__reference()); - if(oir) - { - if(!oir->getAdapterId().empty()) - { - clearCache(oir); - } - } - else - { - if(ref->getInstance()->traceLevels()->location >= 2) - { - trace("removed endpoints from locator table", ref, object->__reference()->getEndpoints()); - } - } - } + ObjectPrx object = _table->removeProxy(ref->getIdentity()); + if(object) + { + IndirectReferencePtr oir = IndirectReferencePtr::dynamicCast(object->__reference()); + if(oir) + { + if(!oir->getAdapterId().empty()) + { + clearCache(oir); + } + } + else + { + if(ref->getInstance()->traceLevels()->location >= 2) + { + trace("removed endpoints from locator table", ref, object->__reference()->getEndpoints()); + } + } + } } } void IceInternal::LocatorInfo::trace(const string& msg, - const IndirectReferencePtr& ref, - const vector<EndpointIPtr>& endpoints) + const IndirectReferencePtr& ref, + const vector<EndpointIPtr>& endpoints) { Trace out(ref->getInstance()->initializationData().logger, ref->getInstance()->traceLevels()->locationCat); out << msg << '\n'; if(!ref->getAdapterId().empty()) { - out << "adapter = " << ref->getAdapterId() << '\n'; + out << "adapter = " << ref->getAdapterId() << '\n'; } else { - out << "object = " << ref->getInstance()->identityToString(ref->getIdentity()) << '\n'; + out << "object = " << ref->getInstance()->identityToString(ref->getIdentity()) << '\n'; } const char* sep = endpoints.size() > 1 ? ":" : ""; ostringstream o; transform(endpoints.begin(), endpoints.end(), ostream_iterator<string>(o, sep), - Ice::constMemFun(&Endpoint::toString)); + Ice::constMemFun(&Endpoint::toString)); out << "endpoints = " << o.str(); } |