cpp: Add enum and constructor to RWGuard to make read/write more visible
authorDavid Reiss <dreiss@apache.org>
Tue, 9 Mar 2010 05:19:37 +0000 (05:19 +0000)
committerDavid Reiss <dreiss@apache.org>
Tue, 9 Mar 2010 05:19:37 +0000 (05:19 +0000)
git-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@920669 13f79535-47bb-0310-9956-ffa450edef68

lib/cpp/src/concurrency/Mutex.h

index f7ee9f2..a33b995 100644 (file)
@@ -86,15 +86,34 @@ class Guard {
   const Mutex& mutex_;
 };
 
+
+// Can be used as second argument to RWGuard to make code more readable
+// as to whether we're doing acquireRead() or acquireWrite().
+enum RWGuardType {
+  RW_READ = 0,
+  RW_WRITE = 1,
+};
+
+
 class RWGuard {
   public:
-    RWGuard(const ReadWriteMutex& value, bool write = 0) : rw_mutex_(value) {
+    RWGuard(const ReadWriteMutex& value, bool write = false)
+         : rw_mutex_(value) {
       if (write) {
         rw_mutex_.acquireWrite();
       } else {
         rw_mutex_.acquireRead();
       }
     }
+
+    RWGuard(const ReadWriteMutex& value, RWGuardType type)
+         : rw_mutex_(value) {
+      if (type == RW_WRITE) {
+        rw_mutex_.acquireWrite();
+      } else {
+        rw_mutex_.acquireRead();
+      }
+    }
     ~RWGuard() {
       rw_mutex_.release();
     }