digiKam
Loading...
Searching...
No Matches
filereadwritelock.h
Go to the documentation of this file.
1/* ============================================================
2 *
3 * This file is a part of digiKam project
4 * https://www.digikam.org
5 *
6 * Date : 2012-01-29
7 * Description : Intra-process file i/o lock
8 *
9 * SPDX-FileCopyrightText: 2012 by Marcel Wiesweg <marcel dot wiesweg at gmx dot de>
10 *
11 * SPDX-License-Identifier: GPL-2.0-or-later
12 *
13 * ============================================================ */
14
15#pragma once
16
17// Qt includes
18
19#include <QString>
20#include <QTemporaryFile>
21
22// Local includes
23
24#include "digikam_export.h"
25
26namespace Digikam
27{
28
29class FileReadWriteLockPriv;
30
31class DIGIKAM_EXPORT FileReadWriteLockKey
32{
33public:
34
35 explicit FileReadWriteLockKey(const QString& filePath);
37
38 void lockForRead();
39 void lockForWrite();
40 bool tryLockForRead();
41 bool tryLockForRead(int timeout);
42 bool tryLockForWrite();
43 bool tryLockForWrite(int timeout);
44 void unlock();
45
46private:
47
48 // Disable
50 FileReadWriteLockKey& operator=(const FileReadWriteLockKey&) = delete;
51
52 FileReadWriteLockPriv* d = nullptr;
53};
54
55// ----------------------------------------------------------------------
56
57class DIGIKAM_EXPORT FileReadLocker
58{
59public:
60
61 explicit FileReadLocker(const QString& filePath);
63
64private:
65
66 // Disable
67 FileReadLocker(const FileReadLocker&) = delete;
68 FileReadLocker& operator=(const FileReadLocker&) = delete;
69
70 FileReadWriteLockPriv* d = nullptr;
71};
72
73// ----------------------------------------------------------------------
74
75class DIGIKAM_EXPORT FileWriteLocker
76{
77public:
78
79 explicit FileWriteLocker(const QString& filePath);
81
82private:
83
84 // Disable
85 FileWriteLocker(const FileWriteLocker&) = delete;
86 FileWriteLocker& operator=(const FileWriteLocker&) = delete;
87
88 FileReadWriteLockPriv* d = nullptr;
89};
90
91// ----------------------------------------------------------------------
92
93class DIGIKAM_EXPORT SafeTemporaryFile : public QTemporaryFile
94{
95 Q_OBJECT
96
97public:
98
99 explicit SafeTemporaryFile(const QString& templ);
101
102 bool open();
103
104 QString safeFilePath() const;
105
106protected:
107
108 bool open(QIODevice::OpenMode) override;
109
110private:
111
112 // Disable
113 SafeTemporaryFile(QObject*) = delete;
114
115private:
116
117 QString m_templ;
118};
119
120} // namespace Digikam
Definition filereadwritelock.h:58
Definition filereadwritelock.h:32
Definition filereadwritelock.h:76
Definition filereadwritelock.h:94
Definition datefolderview.cpp:34