From 8570b4c56616547e5fa2530e6b9733fb37cf02a3 Mon Sep 17 00:00:00 2001 From: Linus Jahn Date: Sun, 26 Jul 2020 20:33:07 +0200 Subject: QXmppStream: Move stream management into separate class --- src/base/QXmppStreamManagement_p.h | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) (limited to 'src/base/QXmppStreamManagement_p.h') 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 #include +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 m_unacknowledgedStanzas; + unsigned int m_lastOutgoingSequenceNumber = 0; + unsigned int m_lastIncomingSequenceNumber = 0; +}; + #endif -- cgit v1.2.3