00001 #ifndef LOCK_H
00002 #define LOCK_H
00003
00004
00005
00006
00007
00008
00009
00010 #include <stdexcept>
00011 #include <boost/noncopyable.hpp>
00012
00013
00014 namespace storage
00015 {
00016
00017 class LockException : public std::exception
00018 {
00019
00020 public:
00021
00022 LockException(pid_t locker_pid);
00023 virtual ~LockException() throw();
00024
00025 pid_t getLockerPid() const { return locker_pid; }
00026
00027 protected:
00028
00029 pid_t locker_pid;
00030
00031 };
00032
00033
00037 class Lock : boost::noncopyable
00038 {
00039
00040 public:
00041
00042 Lock(bool readonly, bool disable = false);
00043 ~Lock() throw();
00044
00045 private:
00046
00047 bool disabled;
00048 int fd;
00049
00050 };
00051 }
00052
00053
00054 #endif