From 564d179640cf49feeb8ff84133f892499afb0e65 Mon Sep 17 00:00:00 2001 From: Andrew Stitcher Date: Mon, 4 May 2009 15:55:21 +0000 Subject: Refactored the DispatchHandle/Poller code to remove a long standing set of race conditions. - Changed Poller naming for better clarity with new semantics. - Changed Poller semantics to avoid DispatchHandle keeping so much state - Changed Poller so that it will never re-enable a Handle until Poller::wait is called again on the same thread that returned the Handle. git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk/qpid@771338 13f79535-47bb-0310-9956-ffa450edef68 --- cpp/src/qpid/sys/windows/AsynchIO.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) (limited to 'cpp/src/qpid/sys/windows/AsynchIO.cpp') diff --git a/cpp/src/qpid/sys/windows/AsynchIO.cpp b/cpp/src/qpid/sys/windows/AsynchIO.cpp index 0a3c36452c..88be5d7634 100644 --- a/cpp/src/qpid/sys/windows/AsynchIO.cpp +++ b/cpp/src/qpid/sys/windows/AsynchIO.cpp @@ -146,7 +146,7 @@ AsynchAcceptorPrivate::~AsynchAcceptorPrivate(void) { } void AsynchAcceptorPrivate::start(Poller::shared_ptr poller) { - poller->addFd(PollerHandle(socket), Poller::INPUT); + poller->monitorHandle(PollerHandle(socket), Poller::INPUT); restart (); } @@ -426,7 +426,7 @@ void AsynchIO::queueForDeletion() { void AsynchIO::start(Poller::shared_ptr poller0) { poller = poller0; - poller->addFd(PollerHandle(socket), Poller::INPUT); + poller->monitorHandle(PollerHandle(socket), Poller::INPUT); if (writeQueue.size() > 0) // Already have data queued for write notifyPendingWrite(); startReading(); @@ -471,7 +471,7 @@ void AsynchIO::notifyPendingWrite() { boost::bind(&AsynchIO::completion, this, _1)); IOHandle h(hp); PollerHandle ph(h); - poller->addFd(ph, Poller::OUTPUT); + poller->monitorHandle(ph, Poller::OUTPUT); } void AsynchIO::queueWriteClose() { @@ -559,7 +559,7 @@ void AsynchIO::requestCallback(RequestCallback callback) { callback); IOHandle h(hp); PollerHandle ph(h); - poller->addFd(ph, Poller::INPUT); + poller->monitorHandle(ph, Poller::INPUT); } /** -- cgit v1.2.1