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