diff options
author | Andrew Stitcher <astitcher@apache.org> | 2009-05-04 15:55:21 +0000 |
---|---|---|
committer | Andrew Stitcher <astitcher@apache.org> | 2009-05-04 15:55:21 +0000 |
commit | 564d179640cf49feeb8ff84133f892499afb0e65 (patch) | |
tree | d6fb4c2f2c789379937c2b622772cea2aed69e1d /cpp/src/qpid/sys/Poller.h | |
parent | c912884c11debf57e8c154fba7dbbcae8ea34d90 (diff) | |
download | qpid-python-564d179640cf49feeb8ff84133f892499afb0e65.tar.gz |
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
Diffstat (limited to 'cpp/src/qpid/sys/Poller.h')
-rw-r--r-- | cpp/src/qpid/sys/Poller.h | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/cpp/src/qpid/sys/Poller.h b/cpp/src/qpid/sys/Poller.h index 825ad8bfed..fd45848b79 100644 --- a/cpp/src/qpid/sys/Poller.h +++ b/cpp/src/qpid/sys/Poller.h @@ -94,10 +94,10 @@ public: // Poller run loop QPID_COMMON_EXTERN void run(); - QPID_COMMON_EXTERN void addFd(PollerHandle& handle, Direction dir); - QPID_COMMON_EXTERN void delFd(PollerHandle& handle); - QPID_COMMON_EXTERN void modFd(PollerHandle& handle, Direction dir); - QPID_COMMON_EXTERN void rearmFd(PollerHandle& handle); + QPID_COMMON_EXTERN void registerHandle(PollerHandle& handle); + QPID_COMMON_EXTERN void unregisterHandle(PollerHandle& handle); + QPID_COMMON_EXTERN void monitorHandle(PollerHandle& handle, Direction dir); + QPID_COMMON_EXTERN void unmonitorHandle(PollerHandle& handle, Direction dir); QPID_COMMON_EXTERN Event wait(Duration timeout = TIME_INFINITE); }; @@ -108,6 +108,7 @@ class IOHandle; class PollerHandlePrivate; class PollerHandle { friend class Poller; + friend class PollerPrivate; friend struct Poller::Event; PollerHandlePrivate* const impl; |