diff options
author | Matthew Newhook <matthew@zeroc.com> | 2002-02-12 17:12:29 +0000 |
---|---|---|
committer | Matthew Newhook <matthew@zeroc.com> | 2002-02-12 17:12:29 +0000 |
commit | 4a9851b86fc52af5b629bf06d7a83d29da15d98f (patch) | |
tree | c38cd4704a983377274bafeb70f2eebc68aba600 /cpp/src/IceUtil/Cond.cpp | |
parent | adding IceXML (diff) | |
download | ice-4a9851b86fc52af5b629bf06d7a83d29da15d98f.tar.bz2 ice-4a9851b86fc52af5b629bf06d7a83d29da15d98f.tar.xz ice-4a9851b86fc52af5b629bf06d7a83d29da15d98f.zip |
Fix some TODO's in IceUtil. IceStorm now uses the new Logger utils.
Diffstat (limited to 'cpp/src/IceUtil/Cond.cpp')
-rw-r--r-- | cpp/src/IceUtil/Cond.cpp | 82 |
1 files changed, 82 insertions, 0 deletions
diff --git a/cpp/src/IceUtil/Cond.cpp b/cpp/src/IceUtil/Cond.cpp index 807295d2441..9487e590931 100644 --- a/cpp/src/IceUtil/Cond.cpp +++ b/cpp/src/IceUtil/Cond.cpp @@ -80,6 +80,88 @@ IceUtil::Cond::broadcast() } void +IceUtil::Cond::waitImpl(const RecMutex& mutex) const +{ + preWait(); + + RecMutex::LockState state; + mutex.unlock(state); + + try + { + dowait(-1); + mutex.lock(state); + } + catch(...) + { + mutex.lock(state); + throw; + } +} + +void +IceUtil::Cond::waitImpl(const Mutex& mutex) const +{ + preWait(); + + Mutex::LockState state; + mutex.unlock(state); + + try + { + dowait(-1); + mutex.lock(state); + } + catch(...) + { + mutex.lock(state); + throw; + } +} + +bool +IceUtil::Cond::timedwaitImpl(const RecMutex& mutex, long msec) const +{ + preWait(); + + RecMutex::LockState state; + mutex.unlock(state); + + try + { + bool rc = dowait(msec); + mutex.lock(state); + return rc; + } + catch(...) + { + mutex.lock(state); + throw; + } +} + +bool +IceUtil::Cond::timedwaitImpl(const Mutex& mutex, long msec) const +{ + preWait(); + + Mutex::LockState state; + mutex.unlock(state); + + try + { + bool rc = dowait(msec); + mutex.lock(state); + return rc; + } + catch(...) + { + mutex.lock(state); + throw; + } +} + +void IceUtil::Cond::wake(bool broadcast) { // |