Main Page   Namespace List   Class Hierarchy   Alphabetical List   Compound List   File List   Namespace Members   Compound Members   File Members   Related Pages   Examples  

vpr::RWMutexNSPR Class Reference

#include <RWMutexNSPR.h>

List of all members.

Public Methods

 RWMutexNSPR ()
 ~RWMutexNSPR ()
vpr::ReturnStatus acquire ()
 Locks the mutex. More...

vpr::ReturnStatus acquireRead ()
 Acquires a read mutex. More...

vpr::ReturnStatus acquireWrite ()
 Acquires a write mutex. More...

vpr::ReturnStatus tryAcquire ()
 Tries to acquire the mutex. More...

vpr::ReturnStatus tryAcquireRead ()
 Tries to acquire a read mutex. More...

vpr::ReturnStatus tryAcquireWrite ()
 Tries to acquire a write mutex. More...

vpr::ReturnStatus release ()
 Releases the mutex. More...


Protected Methods

void operator= (const RWMutexNSPR &)
 RWMutexNSPR (const RWMutexNSPR &)

Protected Attributes

int numWaitingReaders
 Number of waiting readers. More...

int numWaitingWriters
 Number of waiting writers. More...

int mRefCount
PRRWLock * mRwLock


Constructor & Destructor Documentation

vpr::RWMutexNSPR::RWMutexNSPR   [inline]
 

Definition at line 59 of file RWMutexNSPR.h.

00059                  : mRwLock(NULL)
00060    {
00061       // Note the second argument "VPR RW Mutex" is for debug purposes only
00062       mRwLock = PR_NewRWLock(0, "VPR RW Mutex");
00063    }

vpr::RWMutexNSPR::~RWMutexNSPR   [inline]
 

Definition at line 65 of file RWMutexNSPR.h.

00066    {
00067       PR_DestroyRWLock(mRwLock);
00068    }

vpr::RWMutexNSPR::RWMutexNSPR const RWMutexNSPR &    [inline, protected]
 

Definition at line 165 of file RWMutexNSPR.h.

00166    {
00167       /* Do nothing. */ ;
00168    }


Member Function Documentation

vpr::ReturnStatus vpr::RWMutexNSPR::acquire   [inline]
 

Locks the mutex.

Returns:
vpr::ReturnStatus::Succeed is returned if the mutex is acquired. vpr::ReturnStatus::Fail is returned upon error.

Definition at line 76 of file RWMutexNSPR.h.

00077    {
00078       return acquireWrite();
00079    }

vpr::ReturnStatus vpr::RWMutexNSPR::acquireRead   [inline]
 

Acquires a read mutex.

Definition at line 84 of file RWMutexNSPR.h.

00085    {
00086       PR_RWLock_Rlock(mRwLock);
00087       return vpr::ReturnStatus();
00088    }

vpr::ReturnStatus vpr::RWMutexNSPR::acquireWrite   [inline]
 

Acquires a write mutex.

Definition at line 93 of file RWMutexNSPR.h.

00094    {
00095       PR_RWLock_Wlock(mRwLock);
00096       return vpr::ReturnStatus();
00097    }

vpr::ReturnStatus vpr::RWMutexNSPR::tryAcquire   [inline]
 

Tries to acquire the mutex.

Wait until the semaphore value is greater than 0. Then decrement by 1 and return. P operation.

Returns:
vpr::ReturnStatus::Succeed is returned if the mutex is acquired. vpr::ReturnStatus::Fail is returned if the mutex is not acquired.

Definition at line 109 of file RWMutexNSPR.h.

00110    {
00111       return tryAcquireWrite();
00112    }

vpr::ReturnStatus vpr::RWMutexNSPR::tryAcquireRead  
 

Tries to acquire a read mutex.

Definition at line 50 of file RWMutexNSPR.cpp.

References vpr::ReturnStatus::Fail.

00051 {
00052    vpr::ReturnStatus retVal(vpr::ReturnStatus::Fail);
00053 
00054 /*
00055    if (stateLock.acquire().success())
00056    {
00057       if (mRefCount == -1 || numWaitingWriters >0)
00058       {
00059          retVal.setCode(vpr::ReturnStatus::Fail);
00060       }
00061       else
00062       {
00063          mRefCount++;
00064          retVal.setCode(vpr::ReturnStatus::Succeed);
00065       }
00066       stateLock.release();
00067    }
00068 */
00069    return retVal;
00070 }

vpr::ReturnStatus vpr::RWMutexNSPR::tryAcquireWrite  
 

Tries to acquire a write mutex.

Definition at line 72 of file RWMutexNSPR.cpp.

References vpr::ReturnStatus::Fail.

00073 {
00074    vpr::ReturnStatus retVal(vpr::ReturnStatus::Fail);
00075 
00076 /*
00077    if (stateLock.acquire().success())
00078    {
00079       if ( mRefCount == 0 )
00080       {
00081          mRefCount = -1;
00082          retVal.setCode(vpr::ReturnStatus::Succeed);
00083       }
00084       stateLock.release();
00085    }
00086 */
00087 
00088    return retVal;
00089 }

vpr::ReturnStatus vpr::RWMutexNSPR::release   [inline]
 

Releases the mutex.

Returns:
vpr::ReturnStatus::Succeed is returned on success; vpr::ReturnStatus::Fail on error.

Definition at line 130 of file RWMutexNSPR.h.

00131    {
00132       PR_RWLock_Unlock(mRwLock);
00133       return vpr::ReturnStatus();
00134    }

void vpr::RWMutexNSPR::operator= const RWMutexNSPR &    [inline, protected]
 

Definition at line 160 of file RWMutexNSPR.h.

00161    {
00162       /* Do nothing. */ ;
00163    }


Member Data Documentation

int vpr::RWMutexNSPR::numWaitingReaders [protected]
 

Number of waiting readers.

Returns:
0 - Not locked 1 - Locked

Definition at line 150 of file RWMutexNSPR.h.

int vpr::RWMutexNSPR::numWaitingWriters [protected]
 

Number of waiting writers.

Definition at line 151 of file RWMutexNSPR.h.

int vpr::RWMutexNSPR::mRefCount [protected]
 

Definition at line 155 of file RWMutexNSPR.h.

PRRWLock* vpr::RWMutexNSPR::mRwLock [protected]
 

Definition at line 157 of file RWMutexNSPR.h.


The documentation for this class was generated from the following files:
Generated on Sun May 2 14:47:01 2004 for VR Juggler Portable Runtime by doxygen1.2.14 written by Dimitri van Heesch, © 1997-2002