diff options
author | Jose <jose@zeroc.com> | 2009-08-12 00:34:01 +0200 |
---|---|---|
committer | Jose <jose@zeroc.com> | 2009-08-12 00:34:01 +0200 |
commit | ef47c8a38690a16e8b42b5fbbefdd8610fe97d8e (patch) | |
tree | f0ebfb34e207958b29bd8b74c471ed18c6ee10b2 /cpp/src/Ice/ServantManager.cpp | |
parent | Additional fix for bug 4019 (diff) | |
download | ice-ef47c8a38690a16e8b42b5fbbefdd8610fe97d8e.tar.bz2 ice-ef47c8a38690a16e8b42b5fbbefdd8610fe97d8e.tar.xz ice-ef47c8a38690a16e8b42b5fbbefdd8610fe97d8e.zip |
2564 ObjectAdapter::removeServantLocator issues.
Diffstat (limited to 'cpp/src/Ice/ServantManager.cpp')
-rw-r--r-- | cpp/src/Ice/ServantManager.cpp | 54 |
1 files changed, 27 insertions, 27 deletions
diff --git a/cpp/src/Ice/ServantManager.cpp b/cpp/src/Ice/ServantManager.cpp index 4820b979350..d48173717df 100644 --- a/cpp/src/Ice/ServantManager.cpp +++ b/cpp/src/Ice/ServantManager.cpp @@ -366,7 +366,6 @@ IceInternal::ServantManager::removeServantLocator(const string& category) if(p != _locatorMap.end()) { locator = p->second; - locator->deactivate(p->first); _locatorMap.erase(p); _locatorMapHint = _locatorMap.begin(); } @@ -438,45 +437,46 @@ IceInternal::ServantManager::destroy() { ServantMapMap servantMapMap; map<string, ServantLocatorPtr> locatorMap; + Ice::LoggerPtr logger; { IceUtil::Mutex::Lock sync(*this); assert(_instance); // Must not be called after destruction. + logger = _instance->initializationData().logger; servantMapMap.swap(_servantMapMap); _servantMapMapHint = _servantMapMap.end(); - for(map<string, ServantLocatorPtr>::const_iterator p = _locatorMap.begin(); p != _locatorMap.end(); ++p) + locatorMap.swap(_locatorMap); + _locatorMapHint = _locatorMap.end(); + _instance = 0; + } + + for(map<string, ServantLocatorPtr>::const_iterator p = locatorMap.begin(); p != locatorMap.end(); ++p) + { + try { - try - { - p->second->deactivate(p->first); - } - catch(const Exception& ex) - { - Error out(_instance->initializationData().logger); - out << "exception during locator deactivation:\n" - << "object adapter: `" << _adapterName << "'\n" - << "locator category: `" << p->first << "'\n" - << ex; + p->second->deactivate(p->first); + } + catch(const Exception& ex) + { + Error out(logger); + out << "exception during locator deactivation:\n" + << "object adapter: `" << _adapterName << "'\n" + << "locator category: `" << p->first << "'\n" + << ex; #ifdef __GNUC__ - out << "\n" << ex.ice_stackTrace(); + out << "\n" << ex.ice_stackTrace(); #endif - } - catch(...) - { - Error out(_instance->initializationData().logger); - out << "unknown exception during locator deactivation:\n" - << "object adapter: `" << _adapterName << "'\n" - << "locator category: `" << p->first << "'"; - } } - - locatorMap.swap(_locatorMap); - _locatorMapHint = _locatorMap.end(); - - _instance = 0; + catch(...) + { + Error out(logger); + out << "unknown exception during locator deactivation:\n" + << "object adapter: `" << _adapterName << "'\n" + << "locator category: `" << p->first << "'"; + } } // |