diff options
Diffstat (limited to 'cpp/src/Ice/Instance.cpp')
-rw-r--r-- | cpp/src/Ice/Instance.cpp | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/cpp/src/Ice/Instance.cpp b/cpp/src/Ice/Instance.cpp index d69ab198c04..3a1923c3c75 100644 --- a/cpp/src/Ice/Instance.cpp +++ b/cpp/src/Ice/Instance.cpp @@ -14,6 +14,7 @@ #include <Ice/ThreadPool.h> #include <Ice/Emitter.h> #include <Ice/ServantFactoryManager.h> +#include <Ice/UserExceptionFactoryManager.h> #include <Ice/ObjectAdapterFactory.h> #include <Ice/Exception.h> #include <Ice/Properties.h> @@ -119,6 +120,13 @@ IceInternal::Instance::servantFactoryManager() return _servantFactoryManager; } +UserExceptionFactoryManagerPtr +IceInternal::Instance::userExceptionFactoryManager() +{ + JTCSyncT<JTCMutex> sync(*this); + return _userExceptionFactoryManager; +} + ObjectAdapterFactoryPtr IceInternal::Instance::objectAdapterFactory() { @@ -245,6 +253,7 @@ IceInternal::Instance::Instance(const CommunicatorPtr& communicator, const Prope _proxyFactory = new ProxyFactory(this); _emitterFactory = new EmitterFactory(this); _servantFactoryManager = new ServantFactoryManager(); + _userExceptionFactoryManager = new UserExceptionFactoryManager(); _objectAdapterFactory = new ObjectAdapterFactory(this); _threadPool = new ThreadPool(this); } @@ -264,6 +273,7 @@ IceInternal::Instance::~Instance() assert(!_proxyFactory); assert(!_emitterFactory); assert(!_servantFactoryManager); + assert(!_userExceptionFactoryManager); assert(!_objectAdapterFactory); assert(!_threadPool); @@ -361,6 +371,12 @@ IceInternal::Instance::destroy() _servantFactoryManager = 0; } + if(_userExceptionFactoryManager) + { + _userExceptionFactoryManager->destroy(); + _userExceptionFactoryManager = 0; + } + if(_objectAdapterFactory) { _objectAdapterFactory->shutdown(); // ObjectAdapterFactory has shutdown(), not destroy() |