diff options
Diffstat (limited to 'cpp/src/IceStorm/TopicManagerI.cpp')
-rw-r--r-- | cpp/src/IceStorm/TopicManagerI.cpp | 23 |
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; + } + } } |