diff options
author | Benoit Foucher <benoit@zeroc.com> | 2003-03-31 18:56:43 +0000 |
---|---|---|
committer | Benoit Foucher <benoit@zeroc.com> | 2003-03-31 18:56:43 +0000 |
commit | 11552b9bdf4221b54c11d1edac56ace223ef7070 (patch) | |
tree | c72b211689216317b9f64f1a73f16557a34abef5 /cpp/src | |
parent | IceStorm changes (diff) | |
download | ice-11552b9bdf4221b54c11d1edac56ace223ef7070.tar.bz2 ice-11552b9bdf4221b54c11d1edac56ace223ef7070.tar.xz ice-11552b9bdf4221b54c11d1edac56ace223ef7070.zip |
Correctly handle CommunicatorDestroyedException when calling
Instance::objectAdapterFactory()
Diffstat (limited to 'cpp/src')
-rw-r--r-- | cpp/src/Ice/Proxy.cpp | 12 | ||||
-rw-r--r-- | cpp/src/Ice/ThreadPool.cpp | 8 | ||||
-rw-r--r-- | cpp/src/IcePack/ServerI.cpp | 1 |
3 files changed, 7 insertions, 14 deletions
diff --git a/cpp/src/Ice/Proxy.cpp b/cpp/src/Ice/Proxy.cpp index 9e9019ecc99..69adce28413 100644 --- a/cpp/src/Ice/Proxy.cpp +++ b/cpp/src/Ice/Proxy.cpp @@ -705,17 +705,7 @@ IceProxy::Ice::Object::__getDelegate() { if(_reference->collocationOptimization) { - ObjectAdapterFactoryPtr objectAdapterFactory = _reference->instance->objectAdapterFactory(); - - // - // Instance components may be null if communicator has been destroyed. - // - if(!objectAdapterFactory) - { - throw CommunicatorDestroyedException(__FILE__, __LINE__); - } - - ObjectAdapterPtr adapter = objectAdapterFactory->findObjectAdapter(this); + ObjectAdapterPtr adapter = _reference->instance->objectAdapterFactory()->findObjectAdapter(this); if(adapter) { Handle< ::IceDelegateD::Ice::Object> delegate = __createDelegateD(); diff --git a/cpp/src/Ice/ThreadPool.cpp b/cpp/src/Ice/ThreadPool.cpp index 50b9adf3581..5f4f6dfb6f2 100644 --- a/cpp/src/Ice/ThreadPool.cpp +++ b/cpp/src/Ice/ThreadPool.cpp @@ -488,8 +488,12 @@ IceInternal::ThreadPool::run() // // Initiate server shutdown. // - ObjectAdapterFactoryPtr factory = _instance->objectAdapterFactory(); - if(!factory) + ObjectAdapterFactoryPtr factory; + try + { + factory = _instance->objectAdapterFactory(); + } + catch(const Ice::CommunicatorDestroyedException&) { continue; } diff --git a/cpp/src/IcePack/ServerI.cpp b/cpp/src/IcePack/ServerI.cpp index c9d11b546ac..d3cb0a90761 100644 --- a/cpp/src/IcePack/ServerI.cpp +++ b/cpp/src/IcePack/ServerI.cpp @@ -19,7 +19,6 @@ #include <IcePack/Activator.h> #include <IceBox/IceBox.h> -#include "../Ice/Reference.h" using namespace std; using namespace IcePack; |