1 ///###////////////////////////////////////////////////////////////////////////
2 //
3 // Burton Computer Corporation
4 // http://www.burton-computer.com
5 // http://www.cooldevtools.com
6 // $Id: LockFile.h 272 2007-01-06 19:37:27Z brian $
7 //
8 // Copyright (C) 2007 Burton Computer Corporation
9 // ALL RIGHTS RESERVED
10 //
11 // This program is open source software; you can redistribute it
12 // and/or modify it under the terms of the Q Public License (QPL)
13 // version 1.0. Use of this software in whole or in part, including
14 // linking it (modified or unmodified) into other programs is
15 // subject to the terms of the QPL.
16 //
17 // This program is distributed in the hope that it will be useful,
18 // but WITHOUT ANY WARRANTY; without even the implied warranty of
19 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
20 // Q Public License for more details.
21 //
22 // You should have received a copy of the Q Public License
23 // along with this program; see the file LICENSE.txt.  If not, visit
24 // the Burton Computer Corporation or CoolDevTools web site
25 // QPL pages at:
26 //
27 //    http://www.burton-computer.com/qpl.html
28 //    http://www.cooldevtools.com/qpl.html
29 //
30 
31 #ifndef _LockFile_h
32 #define _LockFile_h
33 
34 #include "File.h"
35 #include "LockFD.h"
36 
37 class LockFile
38 {
39 public:
40   LockFile(const File &file);
41   ~LockFile();
42 
43   typedef LockFD::LockType_t LockType_t;
44 
45   void lock(LockType_t lock_type,
46 	    int lock_mode = 0600);
47   void release();
48 
49 private:
50   /// Not implemented.
51   LockFile(const LockFile &);
52 
53   /// Not implemented.
54   LockFile& operator=(const LockFile &);
55 
56 private:
57   File m_file;
58   Ptr<LockFD> m_lock;
59 };
60 
61 #endif // _LockFile_h
62