diff options
author | Benoit Foucher <benoit@zeroc.com> | 2005-02-04 13:15:54 +0000 |
---|---|---|
committer | Benoit Foucher <benoit@zeroc.com> | 2005-02-04 13:15:54 +0000 |
commit | 92d00865903d98a5420329ea36283990d6e01104 (patch) | |
tree | f0ecf4b89d61e230d0bd2e7dc6daf11cc6afe772 /cpp/src/IcePack/WaitQueue.cpp | |
parent | Added demo.dsw and removed demo.sln. (diff) | |
download | ice-92d00865903d98a5420329ea36283990d6e01104.tar.bz2 ice-92d00865903d98a5420329ea36283990d6e01104.tar.xz ice-92d00865903d98a5420329ea36283990d6e01104.zip |
Fixed memory leak and race condition in adapter activation.
Diffstat (limited to 'cpp/src/IcePack/WaitQueue.cpp')
-rw-r--r-- | cpp/src/IcePack/WaitQueue.cpp | 27 |
1 files changed, 14 insertions, 13 deletions
diff --git a/cpp/src/IcePack/WaitQueue.cpp b/cpp/src/IcePack/WaitQueue.cpp index 79e143f33cc..3b5883978b5 100644 --- a/cpp/src/IcePack/WaitQueue.cpp +++ b/cpp/src/IcePack/WaitQueue.cpp @@ -11,36 +11,37 @@ #include <IcePack/WaitQueue.h> using namespace std; +using namespace IcePack; -IcePack::WaitItem::WaitItem(const Ice::ObjectPtr& object) : +WaitItem::WaitItem(const Ice::ObjectPtr& object) : _object(object) { } -IcePack::WaitItem::~WaitItem() +WaitItem::~WaitItem() { } const IceUtil::Time& -IcePack::WaitItem:: getExpirationTime() +WaitItem:: getExpirationTime() { return _expiration; } void -IcePack::WaitItem::setExpirationTime(const IceUtil::Time& time) +WaitItem::setExpirationTime(const IceUtil::Time& time) { _expiration = time; } -IcePack::WaitQueue::WaitQueue() : _destroyed(false) +WaitQueue::WaitQueue() : _destroyed(false) { } void -IcePack::WaitQueue::run() +WaitQueue::run() { - IceUtil::Monitor< IceUtil::Mutex>::Lock sync(*this); + Lock sync(*this); while(true) { @@ -124,10 +125,10 @@ IcePack::WaitQueue::run() } void -IcePack::WaitQueue::destroy() +WaitQueue::destroy() { { - IceUtil::Monitor< IceUtil::Mutex>::Lock sync(*this); + Lock sync(*this); _destroyed = true; notify(); } @@ -136,9 +137,9 @@ IcePack::WaitQueue::destroy() } void -IcePack::WaitQueue::add(const WaitItemPtr& item, const IceUtil::Time& wait) +WaitQueue::add(const WaitItemPtr& item, const IceUtil::Time& wait) { - IceUtil::Monitor< IceUtil::Mutex>::Lock sync(*this); + Lock sync(*this); // // We'll have to notify the thread if it's sleeping for good. @@ -174,9 +175,9 @@ IcePack::WaitQueue::add(const WaitItemPtr& item, const IceUtil::Time& wait) } void -IcePack::WaitQueue::notifyAllWaitingOn(const Ice::ObjectPtr& object) +WaitQueue::notifyAllWaitingOn(const Ice::ObjectPtr& object) { - IceUtil::Monitor< IceUtil::Mutex>::Lock sync(*this); + Lock sync(*this); // // TODO: OPTIMIZATION: Use a map with the object as a key. |