summaryrefslogtreecommitdiff
path: root/cpp/src/IceStorm/TopicManagerI.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'cpp/src/IceStorm/TopicManagerI.cpp')
-rw-r--r--cpp/src/IceStorm/TopicManagerI.cpp23
1 files changed, 23 insertions, 0 deletions
diff --git a/cpp/src/IceStorm/TopicManagerI.cpp b/cpp/src/IceStorm/TopicManagerI.cpp
index 7a282c28baa..49bfe3dbe1e 100644
--- a/cpp/src/IceStorm/TopicManagerI.cpp
+++ b/cpp/src/IceStorm/TopicManagerI.cpp
@@ -211,5 +211,28 @@ TopicManagerI::shutdown()
void
TopicManagerI::reap()
{
+ //
+ // Always Called with mutex locked
+ //
+ // JTCSyncT<JTCMutex> sync(*this);
+ //
+ TopicIMap::iterator i = _topicIMap.begin();
+ while (i != _topicIMap.end())
+ {
+ if (i->second->destroyed())
+ {
+ if (_traceLevels->topicMgr > 0)
+ {
+ ostringstream s;
+ s << "Reaping " << i->first;
+ _communicator->getLogger()->trace(_traceLevels->topicMgrCat, s.str());
+ }
+ _topicIMap.erase(i++);
+ }
+ else
+ {
+ ++i;
+ }
+ }
}