1/****************************************************************************
2**
3** Copyright (C) 2016 The Qt Company Ltd.
4** Contact: https://www.qt.io/licensing/
5**
6** This file is part of the QtQml module of the Qt Toolkit.
7**
8** $QT_BEGIN_LICENSE:LGPL$
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 https://www.qt.io/terms-conditions. For further
15** information use the contact form at https://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 3 as published by the Free Software
20** Foundation and appearing in the file LICENSE.LGPL3 included in the
21** packaging of this file. Please review the following information to
22** ensure the GNU Lesser General Public License version 3 requirements
23** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
24**
25** GNU General Public License Usage
26** Alternatively, this file may be used under the terms of the GNU
27** General Public License version 2.0 or (at your option) the GNU General
28** Public license version 3 or any later version approved by the KDE Free
29** Qt Foundation. The licenses are as published by the Free Software
30** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
31** included in the packaging of this file. Please review the following
32** information to ensure the GNU General Public License requirements will
33** be met: https://www.gnu.org/licenses/gpl-2.0.html and
34** https://www.gnu.org/licenses/gpl-3.0.html.
35**
36** $QT_END_LICENSE$
37**
38****************************************************************************/
39
40#include "qqmldebugclient_p_p.h"
41#include "qqmldebugconnection_p.h"
42
43#include <QtCore/qdebug.h>
44#include <QtCore/qpointer.h>
45
46QT_BEGIN_NAMESPACE
47
48QQmlDebugClient::QQmlDebugClient(const QString &name, QQmlDebugConnection *parent) :
49 QObject(*(new QQmlDebugClientPrivate(name, parent)), parent)
50{
51 Q_D(QQmlDebugClient);
52 d->addToConnection();
53}
54
55QQmlDebugClient::QQmlDebugClient(QQmlDebugClientPrivate &dd) :
56 QObject(dd, dd.connection.data())
57{
58 Q_D(QQmlDebugClient);
59 d->addToConnection();
60}
61
62QQmlDebugClient::~QQmlDebugClient()
63{
64 Q_D(QQmlDebugClient);
65 if (d->connection && !d->connection->removeClient(name: d->name))
66 qWarning() << "QQmlDebugClient: Plugin not registered" << d->name;
67}
68
69QQmlDebugClientPrivate::QQmlDebugClientPrivate(const QString &name,
70 QQmlDebugConnection *connection) :
71 name(name), connection(connection)
72{
73}
74
75void QQmlDebugClientPrivate::addToConnection()
76{
77 Q_Q(QQmlDebugClient);
78 if (connection && !connection->addClient(name, client: q)) {
79 qWarning() << "QQmlDebugClient: Conflicting plugin name" << name;
80 connection = nullptr;
81 }
82}
83
84QString QQmlDebugClient::name() const
85{
86 Q_D(const QQmlDebugClient);
87 return d->name;
88}
89
90float QQmlDebugClient::serviceVersion() const
91{
92 Q_D(const QQmlDebugClient);
93 return d->connection->serviceVersion(serviceName: d->name);
94}
95
96QQmlDebugClient::State QQmlDebugClient::state() const
97{
98 Q_D(const QQmlDebugClient);
99 if (!d->connection || !d->connection->isConnected())
100 return NotConnected;
101
102 if (d->connection->serviceVersion(serviceName: d->name) != -1)
103 return Enabled;
104
105 return Unavailable;
106}
107
108void QQmlDebugClient::sendMessage(const QByteArray &message)
109{
110 Q_D(QQmlDebugClient);
111 d->connection->sendMessage(name: d->name, message);
112}
113
114QQmlDebugConnection *QQmlDebugClient::connection() const
115{
116 Q_D(const QQmlDebugClient);
117 return d->connection;
118}
119
120void QQmlDebugClient::messageReceived(const QByteArray &message)
121{
122 Q_UNUSED(message);
123}
124
125QT_END_NAMESPACE
126

source code of qtdeclarative/src/qmldebug/qqmldebugclient.cpp