1/****************************************************************************
2**
3** Copyright (C) 2015 The Qt Company Ltd and/or its subsidiary(-ies).
4** Contact: http://www.qt-project.org/legal
5**
6** This file is part of the QtSystems module of the Qt Toolkit.
7**
8** $QT_BEGIN_LICENSE:LGPL21$
9** Commercial License Usage
10** Licensees holding valid commercial Qt licenses may use this file in
11** accordance with the commercial license agreement provided with the
12** Software or, alternatively, in accordance with the terms contained in
13** a written agreement between you and The Qt Company. For licensing terms
14** and conditions see http://www.qt.io/terms-conditions. For further
15** information use the contact form at http://www.qt.io/contact-us.
16**
17** GNU Lesser General Public License Usage
18** Alternatively, this file may be used under the terms of the GNU Lesser
19** General Public License version 2.1 or version 3 as published by the Free
20** Software Foundation and appearing in the file LICENSE.LGPLv21 and
21** LICENSE.LGPLv3 included in the packaging of this file. Please review the
22** following information to ensure the GNU Lesser General Public License
23** requirements will be met: https://www.gnu.org/licenses/lgpl.html and
24** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
25**
26** As a special exception, The Qt Company gives you certain additional
27** rights. These rights are described in The Qt Company LGPL Exception
28** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
29**
30** $QT_END_LICENSE$
31**
32****************************************************************************/
33
34//
35// W A R N I N G
36// -------------
37//
38// This file is not part of the Qt API. It exists purely as an
39// implementation detail. This header file may change from version to
40// version without notice, or even be removed.
41//
42// We mean it.
43//
44
45#ifndef QVALUESPACE_P_H
46#define QVALUESPACE_P_H
47
48#include <qvaluespace.h>
49
50#include <QtCore/qobject.h>
51
52QT_BEGIN_NAMESPACE
53
54class QValueSpacePublisher;
55
56QString qCanonicalPath(const QString &path);
57
58class QAbstractValueSpaceLayer : public QObject
59{
60 Q_OBJECT
61
62public:
63 typedef quintptr Handle;
64 static const Handle InvalidHandle = ~Handle(0);
65
66 enum Properties { Publish = 0x00000001 };
67
68 virtual bool value(Handle handle, QVariant *data) = 0;
69 virtual bool value(Handle handle, const QString &subPath, QVariant *data) = 0;
70 virtual void removeHandle(Handle handle) = 0;
71 virtual void setProperty(Handle handle, Properties properties) = 0;
72 virtual Handle item(Handle parent, const QString &subPath) = 0;
73 virtual QSet<QString> children(Handle handle) = 0;
74 virtual QUuid id() = 0;
75 virtual QValueSpace::LayerOptions layerOptions() const = 0;
76
77 // QValueSpaceSubscriber functions
78 virtual bool notifyInterest(Handle handle, bool interested) = 0;
79 virtual bool supportsInterestNotification() const = 0;
80
81 // QValueSpacePublisher functions
82 virtual bool setValue(QValueSpacePublisher *creator, Handle handle, const QString &subPath, const QVariant &value) = 0;
83 virtual bool removeSubTree(QValueSpacePublisher *creator, Handle handle) = 0;
84 virtual bool removeValue(QValueSpacePublisher *creator, Handle handle, const QString &subPath) = 0;
85 virtual void addWatch(QValueSpacePublisher *creator, Handle handle) = 0;
86 virtual void removeWatches(QValueSpacePublisher *creator, Handle parent) = 0;
87 virtual void sync() = 0;
88
89protected:
90 // QValueSpacePublisher functions
91 void emitInterestChanged(QValueSpacePublisher *publisher, const QString &attribute, bool interested);
92
93Q_SIGNALS:
94 void handleChanged(quintptr);
95};
96
97QT_END_NAMESPACE
98
99#endif // QVALUESPACE_P_H
100

source code of qtsystems/src/publishsubscribe/qvaluespace_p.h