From 738623799efdaab619e744919fb7c3821ded703c Mon Sep 17 00:00:00 2001 From: Dwayne Boone Date: Fri, 5 Jan 2007 18:50:12 +0000 Subject: Added ObejctAdapter::destroy --- cpp/src/Ice/ObjectAdapterFactory.cpp | 29 ++++++++++++++++++++++++----- 1 file changed, 24 insertions(+), 5 deletions(-) (limited to 'cpp/src/Ice/ObjectAdapterFactory.cpp') 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(&ObjectAdapter::waitForDeactivate)); - // - // We're done, now we can throw away the object adapters. - // - _adapters.clear(); - { IceUtil::Monitor::Lock sync(*this); @@ -100,6 +95,30 @@ IceInternal::ObjectAdapterFactory::waitForShutdown() } } +void +IceInternal::ObjectAdapterFactory::destroy() +{ + // + // First wait for shutdown to finish. + // + waitForShutdown(); + + map adapters; + + { + IceUtil::Monitor::Lock sync(*this); + + adapters = _adapters; + _adapters.clear(); + } + + // + // Now we destroy each object adapter. + // + for_each(adapters.begin(), adapters.end(), + IceUtil::secondVoidMemFun(&ObjectAdapter::destroy)); +} + ObjectAdapterPtr IceInternal::ObjectAdapterFactory::createObjectAdapter(const string& name, const string& endpoints, const RouterPrx& router) -- cgit v1.2.3