BluezQt 5.109.0
pendingcall.h
1/*
2 * BluezQt - Asynchronous BlueZ wrapper library
3 *
4 * SPDX-FileCopyrightText: 2014-2015 David Rosca <nowrep@gmail.com>
5 *
6 * SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL
7 */
8
9#ifndef BLUEZQT_PENDINGCALL_H
10#define BLUEZQT_PENDINGCALL_H
11
12#include <functional>
13
14#include <QObject>
15
16#include "bluezqt_export.h"
17
18class QDBusError;
19class QDBusPendingCall;
20class QDBusPendingCallWatcher;
21
22namespace BluezQt
23{
32class BLUEZQT_EXPORT PendingCall : public QObject
33{
34 Q_OBJECT
35
36 Q_PROPERTY(QVariant value READ value)
37 Q_PROPERTY(QVariantList values READ values)
38 Q_PROPERTY(int error READ error)
39 Q_PROPERTY(QString errorText READ errorText)
40 Q_PROPERTY(bool isFinished READ isFinished)
41 Q_PROPERTY(QVariant userData READ userData WRITE setUserData)
42
43public:
47 enum Error {
49 NoError = 0,
51 NotReady = 1,
53 Failed = 2,
55 Rejected = 3,
57 Canceled = 4,
59 InvalidArguments = 5,
61 AlreadyExists = 6,
63 DoesNotExist = 7,
65 InProgress = 8,
67 NotInProgress = 9,
69 AlreadyConnected = 10,
71 ConnectFailed = 11,
73 NotConnected = 12,
75 NotSupported = 13,
77 NotAuthorized = 14,
79 AuthenticationCanceled = 15,
81 AuthenticationFailed = 16,
83 AuthenticationRejected = 17,
85 AuthenticationTimeout = 18,
87 ConnectionAttemptFailed = 19,
89 InvalidLength = 20,
91 NotPermitted = 21,
93 DBusError = 98,
95 InternalError = 99,
97 UnknownError = 100,
98 };
99 Q_ENUM(Error)
100
101
104 ~PendingCall() override;
105
111 QVariant value() const;
112
118 QVariantList values() const;
119
126 int error() const;
127
133 QString errorText() const;
134
140 bool isFinished() const;
141
148
154 QVariant userData() const;
155
161 void setUserData(const QVariant &userData);
162
163Q_SIGNALS:
168
169private:
170 enum ReturnType {
171 ReturnVoid,
172 ReturnUint32,
173 ReturnString,
174 ReturnStringList,
175 ReturnObjectPath,
176 ReturnFileTransferList,
177 ReturnTransferWithProperties,
178 ReturnByteArray
179 };
180
181 BLUEZQT_NO_EXPORT explicit PendingCall(Error error, const QString &errorText, QObject *parent = nullptr);
182 BLUEZQT_NO_EXPORT explicit PendingCall(const QDBusPendingCall &call, ReturnType type, QObject *parent = nullptr);
183
184 // exported because called from template BluezQt::TPendingCall constructor
185 using ErrorProcessor = std::function<void(const QDBusError &error)>;
186 using ExternalProcessor = std::function<void(QDBusPendingCallWatcher *watcher, ErrorProcessor errorProcessor, QVariantList *values)>;
187 explicit PendingCall(const QDBusPendingCall &call, ExternalProcessor externalProcessor, QObject *parent = nullptr);
188
189 class PendingCallPrivate *const d;
190
191 friend class PendingCallPrivate;
192 friend class Manager;
193 friend class Adapter;
194 friend class GattServiceRemote;
195 friend class GattCharacteristicRemote;
196 friend class GattDescriptorRemote;
197 friend class Device;
198 friend class GattManager;
199 friend class LEAdvertisingManager;
200 friend class Media;
201 friend class MediaPlayer;
202 friend class ObexManager;
203 friend class ObexTransfer;
204 friend class ObexSession;
205 friend class ObexObjectPush;
206 friend class ObexFileTransfer;
207 template<class... T>
208 friend class TPendingCall;
209};
210
211} // namespace BluezQt
212
213#endif // BLUEZQT_PENDINGCALL_H
Bluetooth adapter.
Definition adapter.h:33
Bluetooth device.
Definition device.h:32
Bluetooth LE GATT characteristic.
Definition gattcharacteristicremote.h:32
Bluetooth LE GATT descriptor.
Definition gattdescriptorremote.h:32
Bluetooth GattManager.
Definition gattmanager.h:45
Bluetooth LE advertising manager.
Definition leadvertisingmanager.h:33
Bluetooth manager.
Definition manager.h:78
Media player.
Definition mediaplayer.h:30
Bluetooth Media.
Definition media.h:39
OBEX file transfer.
Definition obexfiletransfer.h:31
OBEX manager.
Definition obexmanager.h:38
OBEX object push.
Definition obexobjectpush.h:30
OBEX session.
Definition obexsession.h:31
OBEX transfer.
Definition obextransfer.h:31
Pending method call.
Definition pendingcall.h:33
QVariant value() const
Returns a first return value of the call.
int error() const
Returns an error code.
~PendingCall() override
Destroys a PendingCall object.
QVariant userData() const
Returns the user data of the call.
bool isFinished() const
Returns whether the call is finished.
QVariantList values() const
Returns all values of the call.
void finished(PendingCall *call)
Indicates that the call have finished.
QString errorText() const
Returns an error text.
Error
Known error types.
Definition pendingcall.h:47
void setUserData(const QVariant &userData)
Sets the user data of the call.
void waitForFinished()
Waits for the call to finish.
Pending method call (template version).
Definition tpendingcall.h:34