diff options
author | Andrew Stitcher <astitcher@apache.org> | 2010-10-12 16:34:31 +0000 |
---|---|---|
committer | Andrew Stitcher <astitcher@apache.org> | 2010-10-12 16:34:31 +0000 |
commit | b752b045783652ba392de9a8c8c2871114d45919 (patch) | |
tree | 4c0b9d1f56492f169d268ba7f105c838f4066224 /cpp/src | |
parent | 8f2c46ab09f89e1bd4d294c3a7289dbffedeac6b (diff) | |
download | qpid-python-b752b045783652ba392de9a8c8c2871114d45919.tar.gz |
Add state constraint annotations to Rdma::AsynchIO;
Simplify state machine slightly
git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk/qpid@1021831 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'cpp/src')
-rw-r--r-- | cpp/src/qpid/sys/rdma/RdmaIO.cpp | 18 |
1 files changed, 14 insertions, 4 deletions
diff --git a/cpp/src/qpid/sys/rdma/RdmaIO.cpp b/cpp/src/qpid/sys/rdma/RdmaIO.cpp index 1caa9b7e72..bddb0f8782 100644 --- a/cpp/src/qpid/sys/rdma/RdmaIO.cpp +++ b/cpp/src/qpid/sys/rdma/RdmaIO.cpp @@ -89,6 +89,9 @@ namespace Rdma { dataHandle.startWatch(poller); } + // State constraints + // On entry: None + // On exit: STOPPED // Mark for deletion/Delete this object when we have no outstanding writes void AsynchIO::stop(NotifyCallback nc) { ScopedLock<Mutex> l(stateLock); @@ -142,12 +145,15 @@ namespace Rdma { } } + // State constraints + // On entry: None + // On exit: NOTIFY_PENDING || STOPPED void AsynchIO::notifyPendingWrite() { ScopedLock<Mutex> l(stateLock); switch (state) { case IDLE: dataHandle.call(pendingWriteAction); - break; + // Fall Thru case NOTIFY: state = NOTIFY_PENDING; break; @@ -157,6 +163,9 @@ namespace Rdma { } } + // State constraints + // On entry: IDLE || STOPPED + // On exit: IDLE || STOPPED void AsynchIO::dataEvent() { { ScopedLock<Mutex> l(stateLock); @@ -170,7 +179,10 @@ namespace Rdma { writeEvent(); } - void AsynchIO::writeEvent() { + // State constraints + // On entry: NOTIFY_PENDING || STOPPED + // On exit: IDLE || STOPPED + void AsynchIO::writeEvent() { State newState; do { { @@ -192,8 +204,6 @@ namespace Rdma { newState = state; switch (newState) { case NOTIFY_PENDING: - state = NOTIFY; - break; case STOPPED: break; default: |