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*/