Qt
Internal/Contributor docs for the Qt SDK. <b>Note:</b> These are NOT official API docs; those are found <a href='https://doc.qt.io/'>here</a>.
Loading...
Searching...
No Matches
qdbusreply.h
Go to the documentation of this file.
1// Copyright (C) 2016 The Qt Company Ltd.
2// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
3
4#ifndef QDBUSREPLY_H
5#define QDBUSREPLY_H
6
7#include <QtDBus/qtdbusglobal.h>
8#include <QtCore/qvariant.h>
9
10#include <QtDBus/qdbusmessage.h>
11#include <QtDBus/qdbuserror.h>
12#include <QtDBus/qdbusextratypes.h>
13#include <QtDBus/qdbuspendingreply.h>
14
15#ifndef QT_NO_DBUS
16
18
19
20Q_DBUS_EXPORT void qDBusReplyFill(const QDBusMessage &reply, QDBusError &error, QVariant &data);
21
22template<typename T>
24{
25 typedef T Type;
26public:
28 {
29 *this = reply;
30 }
31 inline QDBusReply(const QDBusReply &) = default;
33 {
34 QVariant data(QMetaType::fromType<Type>());
35 qDBusReplyFill(reply, m_error, data);
36 m_data = qvariant_cast<Type>(data);
37 return *this;
38 }
39
40 inline QDBusReply(const QDBusPendingCall &pcall)
41 {
42 *this = pcall;
43 }
45 {
47 other.waitForFinished();
48 return *this = other.reply();
49 }
50 inline QDBusReply(const QDBusPendingReply<T> &reply)
51 {
52 *this = static_cast<QDBusPendingCall>(reply);
53 }
54
55 inline QDBusReply(const QDBusError &dbusError = QDBusError())
56 : m_error(dbusError), m_data(Type())
57 {
58 }
59 inline QDBusReply& operator=(const QDBusError& dbusError)
60 {
61 m_error = dbusError;
62 m_data = Type();
63 return *this;
64 }
65
67 {
68 m_error = other.m_error;
69 m_data = other.m_data;
70 return *this;
71 }
72
73 inline bool isValid() const { return !m_error.isValid(); }
74
75 inline const QDBusError& error() { return m_error; }
76 inline const QDBusError& error() const { return m_error; }
77
78 inline Type value() const
79 {
80 return m_data;
81 }
82
83 inline operator Type () const
84 {
85 return m_data;
86 }
87
88private:
89 QDBusError m_error;
90 Type m_data;
91};
92
93# ifndef Q_QDOC
94// specialize for QVariant:
95template<> inline QDBusReply<QVariant>&
97{
98 QVariant data(QMetaType::fromType<QDBusVariant>());
99 qDBusReplyFill(reply, m_error, data);
100 m_data = qvariant_cast<QDBusVariant>(data).variant();
101 return *this;
102}
103
104// specialize for void:
105template<>
107{
108public:
110 : m_error(reply)
111 {
112 }
114 {
115 m_error = QDBusError(reply);
116 return *this;
117 }
118 inline QDBusReply(const QDBusError &dbusError = QDBusError())
119 : m_error(dbusError)
120 {
121 }
122 inline QDBusReply(const QDBusPendingCall &pcall)
123 {
124 *this = pcall;
125 }
127 {
128 QDBusPendingCall other(pcall);
129 other.waitForFinished();
130 return *this = other.reply();
131 }
132 inline QDBusReply& operator=(const QDBusError& dbusError)
133 {
134 m_error = dbusError;
135 return *this;
136 }
137
138 inline QDBusReply(const QDBusReply &) = default;
139
141 {
142 m_error = other.m_error;
143 return *this;
144 }
145
146 inline bool isValid() const { return !m_error.isValid(); }
147
148 inline const QDBusError& error() { return m_error; }
149 inline const QDBusError& error() const { return m_error; }
150
151private:
152 QDBusError m_error;
153};
154# endif
155
157
158#endif // QT_NO_DBUS
159#endif
NSData * m_data
\inmodule QtDBus
Definition qdbuserror.h:21
bool isValid() const
Returns true if this is a valid error condition (i.e., if there was an error), otherwise false.
\inmodule QtDBus
\inmodule QtDBus
QDBusReply & operator=(const QDBusPendingCall &pcall)
Definition qdbusreply.h:126
QDBusReply(const QDBusError &dbusError=QDBusError())
Definition qdbusreply.h:118
const QDBusError & error() const
Definition qdbusreply.h:149
QDBusReply(const QDBusMessage &reply)
Definition qdbusreply.h:109
QDBusReply & operator=(const QDBusReply &other)
Definition qdbusreply.h:140
QDBusReply(const QDBusPendingCall &pcall)
Definition qdbusreply.h:122
QDBusReply & operator=(const QDBusError &dbusError)
Definition qdbusreply.h:132
QDBusReply & operator=(const QDBusMessage &reply)
Definition qdbusreply.h:113
QDBusReply(const QDBusReply &)=default
bool isValid() const
Definition qdbusreply.h:146
const QDBusError & error()
Definition qdbusreply.h:148
\inmodule QtDBus
Definition qdbusreply.h:24
const QDBusError & error() const
Returns the error code that was returned from the remote function call.
Definition qdbusreply.h:76
Type value() const
Returns the remote function's calls return value.
Definition qdbusreply.h:78
QDBusReply(const QDBusError &dbusError=QDBusError())
Constructs an error reply from the D-Bus error code given by error.
Definition qdbusreply.h:55
const QDBusError & error()
This is an overloaded member function, provided for convenience. It differs from the above function o...
Definition qdbusreply.h:75
QDBusReply & operator=(const QDBusError &dbusError)
Sets this object to contain the error code given by dbusError.
Definition qdbusreply.h:59
QDBusReply(const QDBusReply &)=default
QDBusReply(const QDBusMessage &reply)
Automatically construct a QDBusReply object from the reply message reply, extracting the first return...
Definition qdbusreply.h:27
QDBusReply(const QDBusPendingReply< T > &reply)
Constructs a QDBusReply object from the pending reply message, reply.
Definition qdbusreply.h:50
bool isValid() const
Returns true if no error occurred; otherwise, returns false.
Definition qdbusreply.h:73
QDBusReply & operator=(const QDBusMessage &reply)
Makes this object contain the reply message.
Definition qdbusreply.h:32
QDBusReply & operator=(const QDBusPendingCall &pcall)
Makes this object contain the reply specified by the pending asynchronous call pcall.
Definition qdbusreply.h:44
QDBusReply & operator=(const QDBusReply &other)
Makes this object be a copy of the object other.
Definition qdbusreply.h:66
QDBusReply(const QDBusPendingCall &pcall)
Automatically construct a QDBusReply object from the asynchronous pending call pcall.
Definition qdbusreply.h:40
\inmodule QtCore
Definition qvariant.h:65
Combined button and popup list for selecting options.
DBusConnection const char DBusError DBusBusType DBusError return DBusConnection DBusHandleMessageFunction void DBusFreeFunction return DBusConnection return DBusConnection return const char DBusError return DBusConnection DBusMessage dbus_uint32_t return DBusConnection dbus_bool_t DBusConnection DBusAddWatchFunction DBusRemoveWatchFunction DBusWatchToggledFunction void DBusFreeFunction return DBusConnection DBusDispatchStatusFunction void DBusFreeFunction DBusTimeout return DBusTimeout return DBusWatch return DBusWatch unsigned int return DBusError const DBusError return const DBusMessage return DBusMessage return DBusMessage return DBusMessage return DBusMessage return DBusMessage return DBusMessageIter int const void return DBusMessageIter DBusMessageIter return DBusMessageIter void DBusMessageIter void int return DBusMessage DBusMessageIter return DBusMessageIter return DBusMessageIter DBusMessageIter const char const char const char const char return DBusMessage return DBusMessage const char return DBusMessage dbus_bool_t return DBusMessage dbus_uint32_t return DBusMessage void
DBusConnection const char DBusError * error
void qDBusReplyFill(const QDBusMessage &reply, QDBusError &error, QVariant &data)
QT_BEGIN_NAMESPACE Q_DBUS_EXPORT void qDBusReplyFill(const QDBusMessage &reply, QDBusError &error, QVariant &data)
GLint GLsizei GLsizei GLenum GLenum GLsizei void * data
QSharedPointer< T > other(t)
[5]
QNetworkReply * reply
Definition moc.h:23