QXmpp  Version: 1.5.1
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 class QXmppStream;
20 
32 class QXMPP_EXPORT QXmppClientExtension : public QXmppLoggable, public QXmppExtension
33 {
34  Q_OBJECT
35 
36 public:
38  ~QXmppClientExtension() override;
39 
40  virtual QStringList discoveryFeatures() const;
41  virtual QList<QXmppDiscoveryIq::Identity> discoveryIdentities() const;
42 
43  virtual bool handleStanza(const QDomElement &stanza);
44  virtual bool handleStanza(const QDomElement &stanza, const std::optional<QXmppE2eeMetadata> &e2eeMetadata);
45 
46 protected:
47  QXmppClient *client();
48  virtual void setClient(QXmppClient *client);
49 
50  void injectIq(const QDomElement &element, const std::optional<QXmppE2eeMetadata> &e2eeMetadata);
51  bool injectMessage(QXmppMessage &&message);
52 
53 private:
54  // m_client can be replaced with a d-ptr if needed (same size)
55  QXmppClient *m_client;
56 
57  friend class QXmppClient;
58 };
59 
60 #endif
The QXmppClientExtension class is the base class for QXmppClient extensions.
Definition: QXmppClientExtension.h:33
The QXmppClient class is the main class for using QXmpp.
Definition: QXmppClient.h:84
The QXmppLoggable class represents a source of logging messages.
Definition: QXmppLogger.h:105
The QXmppMessage class represents an XMPP message.
Definition: QXmppMessage.h:35
The QXmppStream class is the base class for all XMPP streams.
Definition: QXmppStream.h:36