aboutsummaryrefslogtreecommitdiff
path: root/src/base/QXmppStreamManagement_p.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/base/QXmppStreamManagement_p.h')
-rw-r--r--src/base/QXmppStreamManagement_p.h36
1 files changed, 36 insertions, 0 deletions
diff --git a/src/base/QXmppStreamManagement_p.h b/src/base/QXmppStreamManagement_p.h
index ab250109..389276d7 100644
--- a/src/base/QXmppStreamManagement_p.h
+++ b/src/base/QXmppStreamManagement_p.h
@@ -30,6 +30,9 @@
#include <QDomDocument>
#include <QXmlStreamWriter>
+class QXmppStream;
+
+//
// W A R N I N G
// -------------
//
@@ -191,4 +194,37 @@ public:
/// \endcond
};
+//
+// This manager is used in the QXmppStream. It contains the parts of stream
+// management that are shared between server and client connections.
+//
+class QXmppStreamManager
+{
+public:
+ explicit QXmppStreamManager(QXmppStream *stream);
+
+ unsigned int lastIncomingSequenceNumber() const;
+
+ void handleDisconnect();
+ void handleStart();
+ void handlePacketSent(const QXmppStanza &packet, const QByteArray &data);
+ bool handleStanza(const QDomElement &stanza);
+
+ void enableStreamManagement(bool resetSequenceNumber);
+ void setAcknowledgedSequenceNumber(unsigned int sequenceNumber);
+
+private:
+ void handleAcknowledgement(const QDomElement &element);
+
+ void sendAcknowledgement();
+ void sendAcknowledgementRequest();
+
+ QXmppStream *stream;
+
+ bool m_enabled = false;
+ QMap<unsigned int, QByteArray> m_unacknowledgedStanzas;
+ unsigned int m_lastOutgoingSequenceNumber = 0;
+ unsigned int m_lastIncomingSequenceNumber = 0;
+};
+
#endif