summaryrefslogtreecommitdiffstats
path: root/src/corelib/ipc/qsystemsemaphore.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/corelib/ipc/qsystemsemaphore.h')
-rw-r--r--src/corelib/ipc/qsystemsemaphore.h75
1 files changed, 75 insertions, 0 deletions
diff --git a/src/corelib/ipc/qsystemsemaphore.h b/src/corelib/ipc/qsystemsemaphore.h
new file mode 100644
index 0000000000..df6fd28342
--- /dev/null
+++ b/src/corelib/ipc/qsystemsemaphore.h
@@ -0,0 +1,75 @@
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
+
+#ifndef QSYSTEMSEMAPHORE_H
+#define QSYSTEMSEMAPHORE_H
+
+#include <QtCore/qcoreapplication.h>
+#include <QtCore/qtipccommon.h>
+#include <QtCore/qstring.h>
+#include <QtCore/qscopedpointer.h>
+
+QT_BEGIN_NAMESPACE
+
+#if QT_CONFIG(systemsemaphore)
+
+class QSystemSemaphorePrivate;
+
+class Q_CORE_EXPORT QSystemSemaphore
+{
+ Q_GADGET
+ Q_DECLARE_TR_FUNCTIONS(QSystemSemaphore)
+public:
+ enum AccessMode
+ {
+ Open,
+ Create
+ };
+ Q_ENUM(AccessMode)
+
+ enum SystemSemaphoreError
+ {
+ NoError,
+ PermissionDenied,
+ KeyError,
+ AlreadyExists,
+ NotFound,
+ OutOfResources,
+ UnknownError
+ };
+
+ QSystemSemaphore(const QNativeIpcKey &key, int initialValue = 0, AccessMode = Open);
+ ~QSystemSemaphore();
+
+ void setNativeKey(const QNativeIpcKey &key, int initialValue = 0, AccessMode = Open);
+ void setNativeKey(const QString &key, int initialValue = 0, AccessMode mode = Open,
+ QNativeIpcKey::Type type = QNativeIpcKey::legacyDefaultTypeForOs())
+ { setNativeKey({ key, type }, initialValue, mode); }
+ QNativeIpcKey nativeIpcKey() const;
+
+ QSystemSemaphore(const QString &key, int initialValue = 0, AccessMode mode = Open);
+ void setKey(const QString &key, int initialValue = 0, AccessMode mode = Open);
+ QString key() const;
+
+ bool acquire();
+ bool release(int n = 1);
+
+ SystemSemaphoreError error() const;
+ QString errorString() const;
+
+ static bool isKeyTypeSupported(QNativeIpcKey::Type type) Q_DECL_CONST_FUNCTION;
+ static QNativeIpcKey platformSafeKey(const QString &key,
+ QNativeIpcKey::Type type = QNativeIpcKey::DefaultTypeForOs);
+ static QNativeIpcKey legacyNativeKey(const QString &key,
+ QNativeIpcKey::Type type = QNativeIpcKey::legacyDefaultTypeForOs());
+
+private:
+ Q_DISABLE_COPY(QSystemSemaphore)
+ QScopedPointer<QSystemSemaphorePrivate> d;
+};
+
+#endif // QT_CONFIG(systemsemaphore)
+
+QT_END_NAMESPACE
+
+#endif // QSYSTEMSEMAPHORE_H