diff options
author | Carl C. Trieloff <cctrieloff@apache.org> | 2007-07-05 17:43:57 +0000 |
---|---|---|
committer | Carl C. Trieloff <cctrieloff@apache.org> | 2007-07-05 17:43:57 +0000 |
commit | f5cb61793d78601f87cd5054cc83ad35eed2dda7 (patch) | |
tree | 4d79e93dcff00205e56902b9d95141779bf47851 /cpp/src | |
parent | a48c9eddce4cbc56521fca7fd64582d9dafe1d40 (diff) | |
download | qpid-python-f5cb61793d78601f87cd5054cc83ad35eed2dda7.tar.gz |
- missing APR mutex update - should now all build again
git-svn-id: https://svn.apache.org/repos/asf/incubator/qpid/trunk/qpid@553576 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'cpp/src')
-rw-r--r-- | cpp/src/qpid/sys/apr/Mutex.h | 52 |
1 files changed, 52 insertions, 0 deletions
diff --git a/cpp/src/qpid/sys/apr/Mutex.h b/cpp/src/qpid/sys/apr/Mutex.h index 700b5b910b..6679adeebb 100644 --- a/cpp/src/qpid/sys/apr/Mutex.h +++ b/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*/ |