QXmpp  Version: 1.10.4
QXmppMamManager.h
1 // SPDX-FileCopyrightText: 2016 Niels Ole Salscheider <niels_ole@salscheider-online.de>
2 //
3 // SPDX-License-Identifier: LGPL-2.1-or-later
4 
5 #ifndef QXMPPMAMMANAGER_H
6 #define QXMPPMAMMANAGER_H
7 
8 #include "QXmppClientExtension.h"
9 #include "QXmppError.h"
10 #include "QXmppMamIq.h"
11 #include "QXmppResultSet.h"
12 
13 #include <variant>
14 
15 #include <QDateTime>
16 
17 template<typename T>
18 class QXmppTask;
19 class QXmppMessage;
20 class QXmppMamManagerPrivate;
21 
38 class QXMPP_EXPORT QXmppMamManager : public QXmppClientExtension
39 {
40  Q_OBJECT
41 
42 public:
43  struct QXMPP_EXPORT RetrievedMessages {
44  QXmppMamResultIq result;
45  QVector<QXmppMessage> messages;
46  };
47 
48  using RetrieveResult = std::variant<RetrievedMessages, QXmppError>;
49 
51  ~QXmppMamManager();
52 
53  QString retrieveArchivedMessages(const QString &to = QString(),
54  const QString &node = QString(),
55  const QString &jid = QString(),
56  const QDateTime &start = QDateTime(),
57  const QDateTime &end = QDateTime(),
58  const QXmppResultSetQuery &resultSetQuery = QXmppResultSetQuery());
59  QXmppTask<RetrieveResult> retrieveMessages(const QString &to = QString(),
60  const QString &node = QString(),
61  const QString &jid = QString(),
62  const QDateTime &start = QDateTime(),
63  const QDateTime &end = QDateTime(),
64  const QXmppResultSetQuery &resultSetQuery = QXmppResultSetQuery());
65 
67  QStringList discoveryFeatures() const override;
68  bool handleStanza(const QDomElement &element) override;
70 
71 Q_SIGNALS:
73  void archivedMessageReceived(const QString &queryId,
74  const QXmppMessage &message);
75 
77  void resultsRecieved(const QString &queryId,
78  const QXmppResultSetReply &resultSetReply,
79  bool complete);
80 
81 private:
82  std::unique_ptr<QXmppMamManagerPrivate> d;
83 };
84 
85 #endif
std::variant< RetrievedMessages, QXmppError > RetrieveResult
Definition: QXmppMamManager.h:48
QXmppMamResultIq result
Definition: QXmppMamManager.h:44
Definition: QXmppTask.h:61
The QXmppResultSetQuery class represents a set element in a query as defined by XEP-0059: Result Set ...
Definition: QXmppResultSet.h:15
The QXmppMamManager class makes it possible to access message archives as defined by XEP-0313: Messag...
Definition: QXmppMamManager.h:38
Contains all retrieved messages and the result IQ that can be used for pagination.
Definition: QXmppMamManager.h:43
The QXmppMessage class represents an XMPP message.
Definition: QXmppMessage.h:63
The QXmppResultSetReply class represents a set element in a reply as defined by XEP-0059: Result Set ...
Definition: QXmppResultSet.h:49
The QXmppClientExtension class is the base class for QXmppClient extensions.
Definition: QXmppClientExtension.h:31
QVector< QXmppMessage > messages
Definition: QXmppMamManager.h:45