8f427b2 by axis at 2009-04-24 1
/****************************************************************************
2
**
89c08c0 by Jason McDonald at 2012-01-11 3
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
04e3b30 by Jason McDonald at 2009-09-09 4
** All rights reserved.
858c70f by Jason McDonald at 2009-06-16 5
** Contact: Nokia Corporation (qt-info@nokia.com)
8f427b2 by axis at 2009-04-24 6
**
7
** This file is part of the QtCore module of the Qt Toolkit.
8
**
9
** $QT_BEGIN_LICENSE:LGPL$
10
** GNU Lesser General Public License Usage
1eea52e by Jyri Tahtela at 2011-05-13 11
** This file may be used under the terms of the GNU Lesser General Public
12
** License version 2.1 as published by the Free Software Foundation and
13
** appearing in the file LICENSE.LGPL included in the packaging of this
14
** file. Please review the following information to ensure the GNU Lesser
15
** General Public License version 2.1 requirements will be met:
16
** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
8f427b2 by axis at 2009-04-24 17
**
04e3b30 by Jason McDonald at 2009-09-09 18
** In addition, as a special exception, Nokia gives you certain additional
1eea52e by Jyri Tahtela at 2011-05-13 19
** rights. These rights are described in the Nokia Qt LGPL Exception
04e3b30 by Jason McDonald at 2009-09-09 20
** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
8f427b2 by axis at 2009-04-24 21
**
1eea52e by Jyri Tahtela at 2011-05-13 22
** GNU General Public License Usage
23
** Alternatively, this file may be used under the terms of the GNU General
24
** Public License version 3.0 as published by the Free Software Foundation
25
** and appearing in the file LICENSE.GPL included in the packaging of this
26
** file. Please review the following information to ensure the GNU General
27
** Public License version 3.0 requirements will be met:
28
** http://www.gnu.org/copyleft/gpl.html.
29
**
30
** Other Usage
31
** Alternatively, this file may be used in accordance with the terms and
32
** conditions contained in a signed written agreement between you and Nokia.
309db73 by Jason McDonald at 2009-08-31 33
**
34
**
35
**
36
**
8f427b2 by axis at 2009-04-24 37
**
38
** $QT_END_LICENSE$
39
**
40
****************************************************************************/
41
42
#ifndef QSYSTEMSEMAPHORE_H
43
#define QSYSTEMSEMAPHORE_H
44
45
#include <QtCore/qstring.h>
7604f80 by Robert Griebl at 2009-06-10 46
#include <QtCore/qscopedpointer.h>
8f427b2 by axis at 2009-04-24 47
48
QT_BEGIN_HEADER
49
50
QT_BEGIN_NAMESPACE
51
52
QT_MODULE(Core)
53
54
#ifndef QT_NO_SYSTEMSEMAPHORE
55
56
class QSystemSemaphorePrivate;
57
58
class Q_CORE_EXPORT QSystemSemaphore
59
{
60
61
public:
62
    enum AccessMode
63
    {
64
        Open,
65
        Create
66
    };
67
68
    enum SystemSemaphoreError
69
    {
70
        NoError,
71
        PermissionDenied,
72
        KeyError,
73
        AlreadyExists,
74
        NotFound,
75
        OutOfResources,
76
        UnknownError
77
    };
78
79
    QSystemSemaphore(const QString &key, int initialValue = 0, AccessMode mode = Open);
80
    ~QSystemSemaphore();
81
82
    void setKey(const QString &key, int initialValue = 0, AccessMode mode = Open);
83
    QString key() const;
84
85
    bool acquire();
86
    bool release(int n = 1);
87
88
    SystemSemaphoreError error() const;
89
    QString errorString() const;
90
91
private:
92
    Q_DISABLE_COPY(QSystemSemaphore)
7604f80 by Robert Griebl at 2009-06-10 93
    QScopedPointer<QSystemSemaphorePrivate> d;
8f427b2 by axis at 2009-04-24 94
};
95
96
#endif // QT_NO_SYSTEMSEMAPHORE
97
98
QT_END_NAMESPACE
99
100
QT_END_HEADER
101
102
#endif // QSYSTEMSEMAPHORE_H
103