diff options
Diffstat (limited to 'cpp/src/Ice/ObjectAdapterI.cpp')
-rw-r--r-- | cpp/src/Ice/ObjectAdapterI.cpp | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/cpp/src/Ice/ObjectAdapterI.cpp b/cpp/src/Ice/ObjectAdapterI.cpp index 7b80c71e8aa..69fc2d477bb 100644 --- a/cpp/src/Ice/ObjectAdapterI.cpp +++ b/cpp/src/Ice/ObjectAdapterI.cpp @@ -99,7 +99,6 @@ Ice::ObjectAdapterI::deactivate() for_each(_incomingConnectionFactories.begin(), _incomingConnectionFactories.end(), Ice::voidMemFun(&IncomingConnectionFactory::destroy)); - _incomingConnectionFactories.clear(); _instance->outgoingConnectionFactory()->removeAdapter(this); @@ -114,6 +113,15 @@ Ice::ObjectAdapterI::deactivate() _deactivated = true; } +void +Ice::ObjectAdapterI::waitForDeactivate() +{ + IceUtil::Mutex::Lock sync(*this); + + for_each(_incomingConnectionFactories.begin(), _incomingConnectionFactories.end(), + Ice::voidMemFun(&IncomingConnectionFactory::waitUntilFinished)); +} + ObjectPrx Ice::ObjectAdapterI::add(const ObjectPtr& object, const Identity& ident) { |