diff options
| author | Linus Jahn <lnj@kaidan.im> | 2020-07-26 20:33:07 +0200 |
|---|---|---|
| committer | Linus Jahn <lnj@kaidan.im> | 2021-01-09 14:37:47 +0100 |
| commit | 8570b4c56616547e5fa2530e6b9733fb37cf02a3 (patch) | |
| tree | dd25156ba0680c964eef13828cb1de0bdf7b48ee /src/base/QXmppStreamManagement_p.h | |
| parent | 9d181aa8e4d31612391586785144dfefa75356ff (diff) | |
| download | qxmpp-8570b4c56616547e5fa2530e6b9733fb37cf02a3.tar.gz | |
QXmppStream: Move stream management into separate class
Diffstat (limited to 'src/base/QXmppStreamManagement_p.h')
| -rw-r--r-- | src/base/QXmppStreamManagement_p.h | 36 |
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 |
