summaryrefslogtreecommitdiff
path: root/cpp/src
diff options
context:
space:
mode:
authorBenoit Foucher <benoit@zeroc.com>2003-03-31 18:56:43 +0000
committerBenoit Foucher <benoit@zeroc.com>2003-03-31 18:56:43 +0000
commit11552b9bdf4221b54c11d1edac56ace223ef7070 (patch)
treec72b211689216317b9f64f1a73f16557a34abef5 /cpp/src
parentIceStorm changes (diff)
downloadice-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.cpp12
-rw-r--r--cpp/src/Ice/ThreadPool.cpp8
-rw-r--r--cpp/src/IcePack/ServerI.cpp1
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;