00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018 #ifndef _DECAF_UTIL_CONCURRENT_LOCKS_LOCK_H_
00019 #define _DECAF_UTIL_CONCURRENT_LOCKS_LOCK_H_
00020
00021 #include <decaf/util/Config.h>
00022
00023 #include <decaf/lang/exceptions/InterruptedException.h>
00024 #include <decaf/lang/exceptions/UnsupportedOperationException.h>
00025 #include <decaf/util/concurrent/locks/Condition.h>
00026
00027 namespace decaf {
00028 namespace util {
00029 namespace concurrent {
00030 namespace locks {
00031
00099 class DECAF_API Lock {
00100 public:
00101
00102 virtual ~Lock();
00103
00118 virtual void lock() = 0;
00119
00160 virtual void lockInterruptibly() = 0;
00161
00189 virtual bool tryLock() = 0;
00190
00246 virtual bool tryLock(long long time, const TimeUnit& unit) = 0;
00247
00261 virtual void unlock() = 0;
00262
00282 virtual Condition* newCondition() = 0;
00283
00287 virtual std::string toString() const = 0;
00288 };
00289
00290 }}}}
00291
00292 #endif