summaryrefslogtreecommitdiff
path: root/cpp/src/Ice/RouterInfo.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'cpp/src/Ice/RouterInfo.cpp')
-rw-r--r--cpp/src/Ice/RouterInfo.cpp14
1 files changed, 14 insertions, 0 deletions
diff --git a/cpp/src/Ice/RouterInfo.cpp b/cpp/src/Ice/RouterInfo.cpp
index 32d8dbdfd52..e695ad0214d 100644
--- a/cpp/src/Ice/RouterInfo.cpp
+++ b/cpp/src/Ice/RouterInfo.cpp
@@ -12,6 +12,7 @@
#include <Ice/Router.h>
#include <Ice/RoutingTable.h>
#include <Ice/LocalException.h>
+#include <Ice/Functional.h>
using namespace std;
using namespace Ice;
@@ -33,6 +34,8 @@ IceInternal::RouterManager::destroy()
{
IceUtil::Mutex::Lock sync(*this);
+ for_each(_table.begin(), _table.end(), Ice::secondVoidMemFun<RouterPrx, RouterInfo>(&RouterInfo::destroy));
+
_table.clear();
_tableHint = _table.end();
}
@@ -83,6 +86,17 @@ IceInternal::RouterInfo::RouterInfo(const RouterPrx& router) :
assert(_router);
}
+void
+IceInternal::RouterInfo::destroy()
+{
+ IceUtil::Mutex::Lock sync(*this);
+
+ _clientProxy = 0;
+ _serverProxy = 0;
+ _adapter = 0;
+ _routingTable->clear();
+}
+
bool
IceInternal::RouterInfo::operator==(const RouterInfo& rhs) const
{