QCAD
Open Source 2D CAD
 All Classes Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
RLockedFile.h
Go to the documentation of this file.
1 
20 #ifndef RLOCKEDFILE_H
21 #define RLOCKEDFILE_H
22 
23 #include "core_global.h"
24 
25 #include <QtCore/QFile>
26 #ifdef Q_OS_WIN
27 #include <QtCore/QVector>
28 #endif
29 
30 class QCADCORE_EXPORT RLockedFile : public QFile
31 {
32 public:
33  enum LockMode { NoLock = 0, ReadLock, WriteLock };
34 
35  RLockedFile();
36  RLockedFile(const QString &name);
37  ~RLockedFile();
38 
39  bool open(OpenMode mode);
40 
41  bool lock(LockMode mode, bool block = true);
42  bool unlock();
43  bool isLocked() const;
44  LockMode lockMode() const;
45 
46 private:
47 #ifdef Q_OS_WIN
48  Qt::HANDLE wmutex;
49  Qt::HANDLE rmutex;
50  QVector<Qt::HANDLE> rmutexes;
51  QString mutexname;
52 
53  Qt::HANDLE getMutexHandle(int idx, bool doCreate);
54  bool waitMutex(Qt::HANDLE mutex, bool doBlock);
55 
56 #endif
58 };
59 
60 #endif