summaryrefslogtreecommitdiff
path: root/cpp/src/IceGrid/ReapThread.cpp
diff options
context:
space:
mode:
authorBenoit Foucher <benoit@zeroc.com>2006-05-05 12:08:20 +0000
committerBenoit Foucher <benoit@zeroc.com>2006-05-05 12:08:20 +0000
commit18f9a9bed9a763f4d902bdc859cc1b2731679d58 (patch)
tree0ee9bd8702b9e604d8e5a5102a5d001f3baf4ec4 /cpp/src/IceGrid/ReapThread.cpp
parentMore changes wrt string conversion (diff)
downloadice-18f9a9bed9a763f4d902bdc859cc1b2731679d58.tar.bz2
ice-18f9a9bed9a763f4d902bdc859cc1b2731679d58.tar.xz
ice-18f9a9bed9a763f4d902bdc859cc1b2731679d58.zip
Removed session based locator, refactored allocation code.
Diffstat (limited to 'cpp/src/IceGrid/ReapThread.cpp')
-rw-r--r--cpp/src/IceGrid/ReapThread.cpp12
1 files changed, 5 insertions, 7 deletions
diff --git a/cpp/src/IceGrid/ReapThread.cpp b/cpp/src/IceGrid/ReapThread.cpp
index 7a312c8dbe6..4278dba3b99 100644
--- a/cpp/src/IceGrid/ReapThread.cpp
+++ b/cpp/src/IceGrid/ReapThread.cpp
@@ -27,13 +27,13 @@ ReapThread::run()
{
{
Lock sync(*this);
+ timedWait(_timeout);
+
if(_terminated)
{
break;
}
- timedWait(_timeout);
-
list<ReapablePtr>::iterator p = _sessions.begin();
while(p != _sessions.end())
{
@@ -73,16 +73,15 @@ ReapThread::run()
void
ReapThread::terminate()
{
+ list<ReapablePtr> reap;
{
Lock sync(*this);
_terminated = true;
notify();
+ reap.swap(_sessions);
}
- //
- // _sessions is immutable once the reap thread is terminated.
- //
- for(list<ReapablePtr>::const_iterator p = _sessions.begin(); p != _sessions.end(); ++p)
+ for(list<ReapablePtr>::const_iterator p = reap.begin(); p != reap.end(); ++p)
{
try
{
@@ -93,7 +92,6 @@ ReapThread::terminate()
// Ignore.
}
}
- _sessions.clear();
}
void