summaryrefslogtreecommitdiff
path: root/qpid/cpp/src
diff options
context:
space:
mode:
authorCarl C. Trieloff <cctrieloff@apache.org>2007-07-05 17:43:57 +0000
committerCarl C. Trieloff <cctrieloff@apache.org>2007-07-05 17:43:57 +0000
commitcebab87de09ac2a704f65a6b25fb07f5995b8687 (patch)
treed67500e85d98e046fcd57aa42d95e470039b88c0 /qpid/cpp/src
parentd34b1cb9829a5d02c24f5be1f7e337b85dbc9b75 (diff)
downloadqpid-python-cebab87de09ac2a704f65a6b25fb07f5995b8687.tar.gz
- missing APR mutex update - should now all build again
git-svn-id: https://svn.apache.org/repos/asf/incubator/qpid/trunk@553576 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'qpid/cpp/src')
-rw-r--r--qpid/cpp/src/qpid/sys/apr/Mutex.h52
1 files changed, 52 insertions, 0 deletions
diff --git a/qpid/cpp/src/qpid/sys/apr/Mutex.h b/qpid/cpp/src/qpid/sys/apr/Mutex.h
index 700b5b910b..6679adeebb 100644
--- a/qpid/cpp/src/qpid/sys/apr/Mutex.h
+++ b/qpid/cpp/src/qpid/sys/apr/Mutex.h
@@ -68,5 +68,57 @@ void Mutex::trylock() {
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*/