~ubuntu-app-review-contributors/ubuntu-app-reviews/nulloy

« back to all changes in this revision

Viewing changes to 3rdParty/qtsingleapplication-2.6.1/src/qtlockedfile.h

  • Committer: Daniel Holbach
  • Author(s): Sergey Vlasov
  • Date: 2012-07-09 11:00:00 UTC
  • Revision ID: daniel.holbach@canonical.com-20120709110000-i2orvyiwe4pva1v6
Tags: upstream-0.4.8~rc6
ImportĀ upstreamĀ versionĀ 0.4.8~rc6

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/****************************************************************************
 
2
** 
 
3
** Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
 
4
** All rights reserved.
 
5
** Contact: Nokia Corporation (qt-info@nokia.com)
 
6
** 
 
7
** This file is part of a Qt Solutions component.
 
8
**
 
9
** Commercial Usage  
 
10
** Licensees holding valid Qt Commercial licenses may use this file in
 
11
** accordance with the Qt Solutions Commercial License Agreement provided
 
12
** with the Software or, alternatively, in accordance with the terms
 
13
** contained in a written agreement between you and Nokia.
 
14
** 
 
15
** GNU Lesser General Public License Usage
 
16
** Alternatively, this file may be used under the terms of the GNU Lesser
 
17
** General Public License version 2.1 as published by the Free Software
 
18
** Foundation and appearing in the file LICENSE.LGPL included in the
 
19
** packaging of this file.  Please review the following information to
 
20
** ensure the GNU Lesser General Public License version 2.1 requirements
 
21
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
 
22
** 
 
23
** In addition, as a special exception, Nokia gives you certain
 
24
** additional rights. These rights are described in the Nokia Qt LGPL
 
25
** Exception version 1.1, included in the file LGPL_EXCEPTION.txt in this
 
26
** package.
 
27
** 
 
28
** GNU General Public License Usage 
 
29
** Alternatively, this file may be used under the terms of the GNU
 
30
** General Public License version 3.0 as published by the Free Software
 
31
** Foundation and appearing in the file LICENSE.GPL included in the
 
32
** packaging of this file.  Please review the following information to
 
33
** ensure the GNU General Public License version 3.0 requirements will be
 
34
** met: http://www.gnu.org/copyleft/gpl.html.
 
35
** 
 
36
** Please note Third Party Software included with Qt Solutions may impose
 
37
** additional restrictions and it is the user's responsibility to ensure
 
38
** that they have met the licensing requirements of the GPL, LGPL, or Qt
 
39
** Solutions Commercial license and the relevant license of the Third
 
40
** Party Software they are using.
 
41
** 
 
42
** If you are unsure which license is appropriate for your use, please
 
43
** contact Nokia at qt-info@nokia.com.
 
44
** 
 
45
****************************************************************************/
 
46
 
 
47
#ifndef QTLOCKEDFILE_H
 
48
#define QTLOCKEDFILE_H
 
49
 
 
50
#include <QtCore/QFile>
 
51
#ifdef Q_OS_WIN
 
52
#include <QtCore/QVector>
 
53
#endif
 
54
 
 
55
#if defined(Q_WS_WIN)
 
56
#  if !defined(QT_QTLOCKEDFILE_EXPORT) && !defined(QT_QTLOCKEDFILE_IMPORT)
 
57
#    define QT_QTLOCKEDFILE_EXPORT
 
58
#  elif defined(QT_QTLOCKEDFILE_IMPORT)
 
59
#    if defined(QT_QTLOCKEDFILE_EXPORT)
 
60
#      undef QT_QTLOCKEDFILE_EXPORT
 
61
#    endif
 
62
#    define QT_QTLOCKEDFILE_EXPORT __declspec(dllimport)
 
63
#  elif defined(QT_QTLOCKEDFILE_EXPORT)
 
64
#    undef QT_QTLOCKEDFILE_EXPORT
 
65
#    define QT_QTLOCKEDFILE_EXPORT __declspec(dllexport)
 
66
#  endif
 
67
#else
 
68
#  define QT_QTLOCKEDFILE_EXPORT
 
69
#endif
 
70
 
 
71
class QT_QTLOCKEDFILE_EXPORT QtLockedFile : public QFile
 
72
{
 
73
public:
 
74
    enum LockMode { NoLock = 0, ReadLock, WriteLock };
 
75
 
 
76
    QtLockedFile();
 
77
    QtLockedFile(const QString &name);
 
78
    ~QtLockedFile();
 
79
 
 
80
    bool open(OpenMode mode);
 
81
 
 
82
    bool lock(LockMode mode, bool block = true);
 
83
    bool unlock();
 
84
    bool isLocked() const;
 
85
    LockMode lockMode() const;
 
86
 
 
87
private:
 
88
#ifdef Q_OS_WIN
 
89
    Qt::HANDLE wmutex;
 
90
    Qt::HANDLE rmutex;
 
91
    QVector<Qt::HANDLE> rmutexes;
 
92
    QString mutexname;
 
93
 
 
94
    Qt::HANDLE getMutexHandle(int idx, bool doCreate);
 
95
    bool waitMutex(Qt::HANDLE mutex, bool doBlock);
 
96
 
 
97
#endif
 
98
    LockMode m_lock_mode;
 
99
};
 
100
 
 
101
#endif