QXmpp Version: 1.12.0
Loading...
Searching...
No Matches
QXmppDiscoveryManager.h
1// SPDX-FileCopyrightText: 2010 Manjeet Dahiya <manjeetdahiya@gmail.com>
2// SPDX-FileCopyrightText: 2021 Linus Jahn <lnj@kaidan.im>
3//
4// SPDX-License-Identifier: LGPL-2.1-or-later
5
6#ifndef QXMPPDISCOVERYMANAGER_H
7#define QXMPPDISCOVERYMANAGER_H
8
9#include "QXmppClientExtension.h"
10
11#include <variant>
12
13#include <QDateTime>
14
15template<typename T>
16class QXmppTask;
17class QXmppDataForm;
19class QXmppDiscoveryManagerPrivate;
20struct QXmppError;
21
23{
24 Q_OBJECT
25
26public:
28 enum class CachePolicy {
31 Strict,
34 Relaxed,
35 };
36
38 ~QXmppDiscoveryManager() override;
39
40 QXmppTask<QXmpp::Result<QXmppDiscoInfo>> info(const QString &jid, const QString &node = {}, CachePolicy fetchPolicy = CachePolicy::Relaxed);
41 QXmppTask<QXmpp::Result<QList<QXmppDiscoItem>>> items(const QString &jid, const QString &node = {}, CachePolicy fetchPolicy = CachePolicy::Relaxed);
42
43 const QList<QXmppDiscoIdentity> &identities() const;
44 void setIdentities(const QList<QXmppDiscoIdentity> &identities);
45
46 const QList<QXmppDataForm> &infoForms() const;
47 void setInfoForms(const QList<QXmppDataForm> &dataForms);
48
49 QString clientCapabilitiesNode() const;
50 void setClientCapabilitiesNode(const QString &);
51
52 QXmppDiscoInfo buildClientInfo() const;
53
55 QStringList discoveryFeatures() const override;
56 bool handleStanza(const QDomElement &element) override;
58
60 Q_SIGNAL void infoReceived(const QXmppDiscoveryIq &);
61
63 Q_SIGNAL void itemsReceived(const QXmppDiscoveryIq &);
64
65#if QXMPP_DEPRECATED_SINCE(1, 12)
66 QT_WARNING_PUSH
67 QT_WARNING_DISABLE_DEPRECATED
68 using InfoResult [[deprecated]] = std::variant<QXmppDiscoveryIq, QXmppError>;
69 using ItemsResult [[deprecated]] = std::variant<QList<QXmppDiscoveryIq::Item>, QXmppError>;
70 [[deprecated("Use info()")]]
71 QXmppTask<InfoResult> requestDiscoInfo(const QString &jid, const QString &node = {});
72 [[deprecated("Use items()")]]
73 QXmppTask<ItemsResult> requestDiscoItems(const QString &jid, const QString &node = {});
74 QT_WARNING_POP
75
76 [[deprecated("Use buildDiscoInfo()")]]
77 QXmppDiscoveryIq capabilities();
78
79 [[deprecated("Use ownIdentities()")]]
80 QString clientCategory() const;
81 [[deprecated("Use setOwnIdentities()")]]
82 void setClientCategory(const QString &);
83
84 [[deprecated("Use ownIdentities()")]]
85 void setClientName(const QString &);
86 [[deprecated("Use setOwnIdentities()")]]
87 QString clientApplicationName() const;
88
89 [[deprecated("Use ownIdentities()")]]
90 QString clientType() const;
91 [[deprecated("Use setOwnIdentities()")]]
92 void setClientType(const QString &);
93
94 [[deprecated("Use ownDataForms()")]]
95 QXmppDataForm clientInfoForm() const;
96 [[deprecated("Use setOwnDataForms()")]]
97 void setClientInfoForm(const QXmppDataForm &form);
98
99 [[deprecated("Use requestDiscoInfo")]]
100 QString requestInfo(const QString &jid, const QString &node = QString());
101 [[deprecated("Use requestDiscoItems")]]
102 QString requestItems(const QString &jid, const QString &node = QString());
103#endif
104
105protected:
106 void onRegistered(QXmppClient *client);
107 void onUnregistered(QXmppClient *client);
108
109private:
110 friend class QXmppDiscoveryManagerPrivate;
111 const std::unique_ptr<QXmppDiscoveryManagerPrivate> d;
112};
113
114#endif // QXMPPDISCOVERYMANAGER_H
The QXmppClientExtension class is the base class for QXmppClient extensions.
Definition QXmppClientExtension.h:32
virtual QStringList discoveryFeatures() const
Definition QXmppClientExtension.cpp:22
virtual void onUnregistered(QXmppClient *client)
Definition QXmppClientExtension.cpp:95
virtual void onRegistered(QXmppClient *client)
Definition QXmppClientExtension.cpp:85
virtual bool handleStanza(const QDomElement &stanza)
You need to implement this method to process incoming XMPP stanzas.
Definition client/compat/removed_api.cpp:44
Main class for starting and managing connections to XMPP servers.
Definition QXmppClient.h:62
Definition QXmppDataForm.h:28
Definition QXmppDiscoveryIq.h:142
Definition QXmppDiscoveryIq.h:200
The QXmppDiscoveryManager class makes it possible to discover information about other entities as def...
Definition QXmppDiscoveryManager.h:23
CachePolicy
Policies for how cached service discovery information is used.
Definition QXmppDiscoveryManager.h:28
std::variant< QList< QXmppDiscoveryIq::Item >, QXmppError > ItemsResult
Definition QXmppDiscoveryManager.h:69
std::variant< QXmppDiscoveryIq, QXmppError > InfoResult
Definition QXmppDiscoveryManager.h:68
Q_SIGNAL void itemsReceived(const QXmppDiscoveryIq &)
This signal is emitted when an items response is received.
Q_SIGNAL void infoReceived(const QXmppDiscoveryIq &)
This signal is emitted when an information response is received.
void info(const QString &message)
Definition QXmppLogger.h:134
Definition QXmppTask.h:46
Definition QXmppError.h:17