You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by as...@apache.org on 2010/10/12 18:34:31 UTC

svn commit: r1021831 - /qpid/trunk/qpid/cpp/src/qpid/sys/rdma/RdmaIO.cpp

Author: astitcher
Date: Tue Oct 12 16:34:31 2010
New Revision: 1021831

URL: http://svn.apache.org/viewvc?rev=1021831&view=rev
Log:
Add state constraint annotations to Rdma::AsynchIO;
Simplify state machine slightly

Modified:
    qpid/trunk/qpid/cpp/src/qpid/sys/rdma/RdmaIO.cpp

Modified: qpid/trunk/qpid/cpp/src/qpid/sys/rdma/RdmaIO.cpp
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/cpp/src/qpid/sys/rdma/RdmaIO.cpp?rev=1021831&r1=1021830&r2=1021831&view=diff
==============================================================================
--- qpid/trunk/qpid/cpp/src/qpid/sys/rdma/RdmaIO.cpp (original)
+++ qpid/trunk/qpid/cpp/src/qpid/sys/rdma/RdmaIO.cpp Tue Oct 12 16:34:31 2010
@@ -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:



---------------------------------------------------------------------
Apache Qpid - AMQP Messaging Implementation
Project:      http://qpid.apache.org
Use/Interact: mailto:commits-subscribe@qpid.apache.org