QXmpp  Version: 1.10.4
QXmppClientExtension.h
1 // SPDX-FileCopyrightText: 2010 Jeremy LainĂ© <jeremy.laine@m4x.org>
2 //
3 // SPDX-License-Identifier: LGPL-2.1-or-later
4 
5 #ifndef QXMPPCLIENTEXTENSION_H
6 #define QXMPPCLIENTEXTENSION_H
7 
8 #include "QXmppDiscoveryIq.h"
9 #include "QXmppExtension.h"
10 #include "QXmppLogger.h"
11 
12 #include <memory>
13 
14 class QDomElement;
15 
16 class QXmppClient;
17 class QXmppClientExtensionPrivate;
18 class QXmppMessage;
19 
31 class QXMPP_EXPORT QXmppClientExtension : public QXmppLoggable, public QXmppExtension
32 {
33  Q_OBJECT
34 
35 public:
37  ~QXmppClientExtension() override;
38 
39  virtual QStringList discoveryFeatures() const;
40  virtual QList<QXmppDiscoveryIq::Identity> discoveryIdentities() const;
41 
42  virtual bool handleStanza(const QDomElement &stanza);
43  virtual bool handleStanza(const QDomElement &stanza, const std::optional<QXmppE2eeMetadata> &e2eeMetadata);
44 
45 protected:
46  QXmppClient *client() const;
47  virtual void setClient(QXmppClient *client);
48 
49  virtual void onRegistered(QXmppClient *client);
50  virtual void onUnregistered(QXmppClient *client);
51 
52  void injectIq(const QDomElement &element, const std::optional<QXmppE2eeMetadata> &e2eeMetadata);
53  bool injectMessage(QXmppMessage &&message);
54 
55 private:
56  // m_client can be replaced with a d-ptr if needed (same size)
57  QXmppClient *m_client;
58 
59  friend class QXmppClient;
60 };
61 
62 #endif
The QXmppLoggable class represents a source of logging messages.
Definition: QXmppLogger.h:109
The QXmppMessage class represents an XMPP message.
Definition: QXmppMessage.h:63
The QXmppClientExtension class is the base class for QXmppClient extensions.
Definition: QXmppClientExtension.h:31
Main class for starting and managing connections to XMPP servers.
Definition: QXmppClient.h:61