diff options
| author | Stephen D. Huston <shuston@apache.org> | 2010-05-07 15:05:45 +0000 |
|---|---|---|
| committer | Stephen D. Huston <shuston@apache.org> | 2010-05-07 15:05:45 +0000 |
| commit | 6388eaba2b7317fcf543c28cfc802bc8587d2727 (patch) | |
| tree | d76fcffa1491dab7045b50586faee274b703c80d /qpid/cpp/src | |
| parent | bc49e03d63283771b8a642c39bc97e63f5b99bc4 (diff) | |
| download | qpid-python-6388eaba2b7317fcf543c28cfc802bc8587d2727.tar.gz | |
Keep dispatching the condition until it is cleared; resolves QPID-2587.
git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk@942096 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'qpid/cpp/src')
| -rw-r--r-- | qpid/cpp/src/qpid/sys/windows/PollableCondition.cpp | 8 |
1 files changed, 3 insertions, 5 deletions
diff --git a/qpid/cpp/src/qpid/sys/windows/PollableCondition.cpp b/qpid/cpp/src/qpid/sys/windows/PollableCondition.cpp index 5ccc136bd1..6a1d9045b4 100644 --- a/qpid/cpp/src/qpid/sys/windows/PollableCondition.cpp +++ b/qpid/cpp/src/qpid/sys/windows/PollableCondition.cpp @@ -55,7 +55,6 @@ private: PollableCondition& parent; boost::shared_ptr<sys::Poller> poller; LONG isSet; - LONG armed; }; PollableConditionPrivate::PollableConditionPrivate(const sys::PollableCondition::Callback& cb, @@ -63,7 +62,7 @@ PollableConditionPrivate::PollableConditionPrivate(const sys::PollableCondition: const boost::shared_ptr<sys::Poller>& poller) : IOHandle(new sys::IOHandlePrivate(INVALID_SOCKET, boost::bind(&PollableConditionPrivate::dispatch, this, _1))), - cb(cb), parent(parent), poller(poller), isSet(0), armed(0) + cb(cb), parent(parent), poller(poller), isSet(0) { } @@ -73,9 +72,6 @@ PollableConditionPrivate::~PollableConditionPrivate() void PollableConditionPrivate::poke() { - if (!armed) - return; - // monitorHandle will queue a completion for the IOCP; when it's handled, a // poller thread will call back to dispatch() below. PollerHandle ph(*this); @@ -86,6 +82,8 @@ void PollableConditionPrivate::dispatch(windows::AsynchIoResult *result) { delete result; // Poller::monitorHandle() allocates this cb(parent); + if (isSet) + poke(); } /* PollableCondition */ |
