QCAD Application Framework
CAD Application Development and Automation.
 All Classes Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
RLockedFile.h
Go to the documentation of this file.
1 #ifndef RLOCKEDFILE_H
2 #define RLOCKEDFILE_H
3 
4 #include <QtCore/QFile>
5 #ifdef Q_OS_WIN
6 #include <QtCore/QVector>
7 #endif
8 
9 class RLockedFile : public QFile
10 {
11 public:
13 
14  RLockedFile();
15  RLockedFile(const QString &name);
16  ~RLockedFile();
17 
18  bool open(OpenMode mode);
19 
20  bool lock(LockMode mode, bool block = true);
21  bool unlock();
22  bool isLocked() const;
23  LockMode lockMode() const;
24 
25 private:
26 #ifdef Q_OS_WIN
27  Qt::HANDLE wmutex;
28  Qt::HANDLE rmutex;
29  QVector<Qt::HANDLE> rmutexes;
30  QString mutexname;
31 
32  Qt::HANDLE getMutexHandle(int idx, bool doCreate);
33  bool waitMutex(Qt::HANDLE mutex, bool doBlock);
34 
35 #endif
37 };
38 
39 #endif