QXmpp  Version: 1.15.1
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 
15 template<typename T>
16 class QXmppTask;
17 class QXmppDataForm;
18 class QXmppDiscoveryIq;
19 class QXmppDiscoveryManagerPrivate;
20 struct QXmppError;
21 
22 class QXMPP_EXPORT QXmppDiscoveryManager : public QXmppClientExtension
23 {
24  Q_OBJECT
25 
26 public:
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 
59 #if QXMPP_DEPRECATED_SINCE(1, 13)
60  [[deprecated("Use info()")]]
63  Q_SIGNAL void infoReceived(const QXmppDiscoveryIq &);
64 
67  [[deprecated("Use items()")]]
68  Q_SIGNAL void itemsReceived(const QXmppDiscoveryIq &);
69 #endif
70 
71 #if QXMPP_DEPRECATED_SINCE(1, 12)
72  QT_WARNING_PUSH
73  QT_WARNING_DISABLE_DEPRECATED
74  using InfoResult = std::variant<QXmppDiscoveryIq, QXmppError>;
75  using ItemsResult = std::variant<QList<QXmppDiscoveryIq::Item>, QXmppError>;
76  [[deprecated("Use info()")]]
77  QXmppTask<InfoResult> requestDiscoInfo(const QString &jid, const QString &node = {});
78  [[deprecated("Use items()")]]
79  QXmppTask<ItemsResult> requestDiscoItems(const QString &jid, const QString &node = {});
80  QT_WARNING_POP
81 
82  [[deprecated("Use buildClientInfo()")]]
83  QXmppDiscoveryIq capabilities();
84 
85  [[deprecated("Use identities()")]]
86  QString clientCategory() const;
87  [[deprecated("Use setIdentities()")]]
88  void setClientCategory(const QString &);
89 
90  [[deprecated("Use identities()")]]
91  void setClientName(const QString &);
92  [[deprecated("Use setIdentities()")]]
93  QString clientApplicationName() const;
94 
95  [[deprecated("Use identities()")]]
96  QString clientType() const;
97  [[deprecated("Use setIdentities()")]]
98  void setClientType(const QString &);
99 
100  [[deprecated("Use infoForms()")]]
101  QXmppDataForm clientInfoForm() const;
102  [[deprecated("Use setInfoForms()()")]]
103  void setClientInfoForm(const QXmppDataForm &form);
104 
105  [[deprecated("Use info()")]]
106  QString requestInfo(const QString &jid, const QString &node = QString());
107  [[deprecated("Use items()")]]
108  QString requestItems(const QString &jid, const QString &node = QString());
109 #endif
110 
111 protected:
112  void onRegistered(QXmppClient *client);
113  void onUnregistered(QXmppClient *client);
114 
115 private:
116  friend class QXmppDiscoveryManagerPrivate;
117  const std::unique_ptr<QXmppDiscoveryManagerPrivate> d;
118 };
119 
120 #endif // QXMPPDISCOVERYMANAGER_H
virtual void onRegistered(QXmppClient *client)
Definition: QXmppClientExtension.cpp:85
virtual void onUnregistered(QXmppClient *client)
Definition: QXmppClientExtension.cpp:95
virtual bool handleStanza(const QDomElement &stanza)
You need to implement this method to process incoming XMPP stanzas.
Definition: client/compat/removed_api.cpp:45
Definition: QXmppDiscoveryIq.h:141
Definition: QXmppError.h:17
The QXmppDiscoveryManager class makes it possible to discover information about other entities as def...
Definition: QXmppDiscoveryManager.h:22
Definition: QXmppTask.h:67
std::variant< QList< QXmppDiscoveryIq::Item >, QXmppError > ItemsResult
Definition: QXmppDiscoveryManager.h:75
Definition: QXmppDataForm.h:27
Definition: QXmppDiscoveryIq.h:199
void info(const QString &message)
Logs an informational message.
Definition: QXmppLogger.h:127
virtual QStringList discoveryFeatures() const
Definition: QXmppClientExtension.cpp:22
std::variant< QXmppDiscoveryIq, QXmppError > InfoResult
Definition: QXmppDiscoveryManager.h:74
The QXmppClientExtension class is the base class for QXmppClient extensions.
Definition: QXmppClientExtension.h:31
CachePolicy
Policies for how cached service discovery information is used.
Definition: QXmppDiscoveryManager.h:28
Main class for starting and managing connections to XMPP servers.
Definition: QXmppClient.h:61