diff options
author | Dwayne Boone <dwayne@zeroc.com> | 2007-01-05 18:50:12 +0000 |
---|---|---|
committer | Dwayne Boone <dwayne@zeroc.com> | 2007-01-05 18:50:12 +0000 |
commit | 738623799efdaab619e744919fb7c3821ded703c (patch) | |
tree | 8e9a20c99c07f6cab855b1ff246101dfdc4dfc28 /cpp/src/Ice/ObjectAdapterFactory.cpp | |
parent | Added ObjectAdapter::destroy (diff) | |
download | ice-738623799efdaab619e744919fb7c3821ded703c.tar.bz2 ice-738623799efdaab619e744919fb7c3821ded703c.tar.xz ice-738623799efdaab619e744919fb7c3821ded703c.zip |
Added ObejctAdapter::destroy
Diffstat (limited to 'cpp/src/Ice/ObjectAdapterFactory.cpp')
-rw-r--r-- | cpp/src/Ice/ObjectAdapterFactory.cpp | 29 |
1 files changed, 24 insertions, 5 deletions
diff --git a/cpp/src/Ice/ObjectAdapterFactory.cpp b/cpp/src/Ice/ObjectAdapterFactory.cpp index 03ca3d518c5..bbd67ffd6eb 100644 --- a/cpp/src/Ice/ObjectAdapterFactory.cpp +++ b/cpp/src/Ice/ObjectAdapterFactory.cpp @@ -84,11 +84,6 @@ IceInternal::ObjectAdapterFactory::waitForShutdown() for_each(_adapters.begin(), _adapters.end(), IceUtil::secondVoidMemFun<const string, ObjectAdapterI>(&ObjectAdapter::waitForDeactivate)); - // - // We're done, now we can throw away the object adapters. - // - _adapters.clear(); - { IceUtil::Monitor<IceUtil::RecMutex>::Lock sync(*this); @@ -100,6 +95,30 @@ IceInternal::ObjectAdapterFactory::waitForShutdown() } } +void +IceInternal::ObjectAdapterFactory::destroy() +{ + // + // First wait for shutdown to finish. + // + waitForShutdown(); + + map<string, ObjectAdapterIPtr> adapters; + + { + IceUtil::Monitor<IceUtil::RecMutex>::Lock sync(*this); + + adapters = _adapters; + _adapters.clear(); + } + + // + // Now we destroy each object adapter. + // + for_each(adapters.begin(), adapters.end(), + IceUtil::secondVoidMemFun<const string, ObjectAdapterI>(&ObjectAdapter::destroy)); +} + ObjectAdapterPtr IceInternal::ObjectAdapterFactory::createObjectAdapter(const string& name, const string& endpoints, const RouterPrx& router) |