diff options
| author | Linus Jahn <lnj@kaidan.im> | 2021-09-05 16:02:37 +0200 |
|---|---|---|
| committer | Linus Jahn <lnj@kaidan.im> | 2021-09-28 17:08:08 +0200 |
| commit | 22be2464b5d253e840d4731fbc86e9633a394e8c (patch) | |
| tree | 341eea345bd621cd4ef045a79aca57129075ee8d /src/base/QXmppPacket.cpp | |
| parent | 21a198fd66e7c35622fce0b08c306553a4e4ff5a (diff) | |
| download | qxmpp-22be2464b5d253e840d4731fbc86e9633a394e8c.tar.gz | |
QXmppStream: Allow to use existing future interface
Diffstat (limited to 'src/base/QXmppPacket.cpp')
| -rw-r--r-- | src/base/QXmppPacket.cpp | 26 |
1 files changed, 22 insertions, 4 deletions
diff --git a/src/base/QXmppPacket.cpp b/src/base/QXmppPacket.cpp index 3676c269..3269369c 100644 --- a/src/base/QXmppPacket.cpp +++ b/src/base/QXmppPacket.cpp @@ -27,13 +27,31 @@ #include <QFuture> #include <QXmlStreamWriter> +inline QByteArray serialize(const QXmppNonza &nonza) +{ + QByteArray out; + QXmlStreamWriter xmlStream(&out); + nonza.toXml(&xmlStream); + return out; +} + /// \cond QXmppPacket::QXmppPacket(const QXmppNonza &nonza) - : m_interface(std::make_shared<QFutureInterface<QXmpp::SendResult>>(QFutureInterfaceBase::Started)), - m_isXmppStanza(nonza.isXmppStanza()) + : QXmppPacket(nonza, std::make_shared<QFutureInterface<QXmpp::SendResult>>()) { - QXmlStreamWriter xmlStream(&m_data); - nonza.toXml(&xmlStream); +} + +QXmppPacket::QXmppPacket(const QXmppNonza &nonza, std::shared_ptr<QFutureInterface<QXmpp::SendResult>> interface) + : QXmppPacket(serialize(nonza), nonza.isXmppStanza(), std::move(interface)) +{ +} + +QXmppPacket::QXmppPacket(const QByteArray &data, bool isXmppStanza, std::shared_ptr<QFutureInterface<QXmpp::SendResult>> interface) + : m_interface(std::move(interface)), + m_data(data), + m_isXmppStanza(isXmppStanza) +{ + m_interface->reportStarted(); } QByteArray QXmppPacket::data() const |
