00001 #ifndef __RIPC_LOCK_H__ 00002 #define __RIPC_LOCK_H__ 00003 00004 #include "RIPCPrimitive.h" 00005 00029 class RIPC_DLL_ENTRY RIPCLock : public virtual RIPCPrimitive { 00030 public: 00034 void exclusiveLock() { 00035 priorityExclusiveLock(DEFAULT_RANK); 00036 } 00037 00045 bool exclusiveLock(unsigned timeout) { 00046 return priorityExclusiveLock(DEFAULT_RANK, timeout); 00047 } 00048 00049 00054 void sharedLock() { 00055 prioritySharedLock(DEFAULT_RANK); 00056 } 00057 00065 bool sharedLock(unsigned timeout) { 00066 return prioritySharedLock(DEFAULT_RANK, timeout); 00067 } 00068 00069 00075 virtual void priorityExclusiveLock(int rank) = 0; 00076 00086 virtual bool priorityExclusiveLock(int rank, unsigned timeout) = 0; 00087 00094 virtual void prioritySharedLock(int rank) = 0; 00095 00105 virtual bool prioritySharedLock(int rank, unsigned timeout) = 0; 00106 00110 virtual void unlock() = 0; 00111 00112 RIPCPrimitiveType getType() { 00113 return RIPC_LOCK; 00114 } 00115 }; 00116 00117 #endif 00118 00119 00120 00121