You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by cc...@apache.org on 2007/07/05 19:43:57 UTC

svn commit: r553576 - /incubator/qpid/trunk/qpid/cpp/src/qpid/sys/apr/Mutex.h

Author: cctrieloff
Date: Thu Jul  5 10:43:57 2007
New Revision: 553576

URL: http://svn.apache.org/viewvc?view=rev&rev=553576
Log:

- missing APR mutex update - should now all build again


Modified:
    incubator/qpid/trunk/qpid/cpp/src/qpid/sys/apr/Mutex.h

Modified: incubator/qpid/trunk/qpid/cpp/src/qpid/sys/apr/Mutex.h
URL: http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/cpp/src/qpid/sys/apr/Mutex.h?view=diff&rev=553576&r1=553575&r2=553576
==============================================================================
--- incubator/qpid/trunk/qpid/cpp/src/qpid/sys/apr/Mutex.h (original)
+++ incubator/qpid/trunk/qpid/cpp/src/qpid/sys/apr/Mutex.h Thu Jul  5 10:43:57 2007
@@ -68,5 +68,57 @@
     CHECK_APR_SUCCESS(apr_thread_mutex_trylock(mutex));
 }
 
+
+/**
+ * RW lock.
+ */
+class RWlock : private boost::noncopyable {
+    friend class Condition;
+
+public:
+    typedef ScopedRlock<RWlock> ScopedRlock;
+    typedef ScopedWlock<RWlock> ScopedWlock;
+    
+    inline RWlock();
+    inline ~RWlock();
+    inline void wlock();  // will write-lock
+    inline void rlock();  // will read-lock
+    inline void unlock();
+    inline void trywlock();  // will write-try
+    inline void tryrlock();  // will read-try
+
+  protected:
+    apr_thread_mutex_t* mutex;
+};
+
+RWlock::RWlock() {
+    CHECK_APR_SUCCESS(apr_thread_mutex_create(&mutex, APR_THREAD_MUTEX_NESTED, APRPool::get()));
+}
+
+RWlock::~RWlock(){
+    CHECK_APR_SUCCESS(apr_thread_mutex_destroy(mutex));
+}
+
+void RWlock::wlock() {
+    CHECK_APR_SUCCESS(apr_thread_mutex_lock(mutex));
+}
+
+void RWlock::rlock() {
+    CHECK_APR_SUCCESS(apr_thread_mutex_lock(mutex));
+}
+
+void RWlock::unlock() {
+    CHECK_APR_SUCCESS(apr_thread_mutex_unlock(mutex));
+}
+
+void RWlock::trywlock() {
+    CHECK_APR_SUCCESS(apr_thread_mutex_trylock(mutex));
+}
+
+void RWlock::tryrlock() {
+    CHECK_APR_SUCCESS(apr_thread_mutex_trylock(mutex));
+}
+
+
 }}
 #endif  /*!_sys_apr_Mutex_h*/