From 22be2464b5d253e840d4731fbc86e9633a394e8c Mon Sep 17 00:00:00 2001 From: Linus Jahn Date: Sun, 5 Sep 2021 16:02:37 +0200 Subject: QXmppStream: Allow to use existing future interface --- src/base/QXmppPacket.cpp | 26 ++++++++++++++++++++++---- 1 file changed, 22 insertions(+), 4 deletions(-) (limited to 'src/base/QXmppPacket.cpp') 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 #include +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>(QFutureInterfaceBase::Started)), - m_isXmppStanza(nonza.isXmppStanza()) + : QXmppPacket(nonza, std::make_shared>()) { - QXmlStreamWriter xmlStream(&m_data); - nonza.toXml(&xmlStream); +} + +QXmppPacket::QXmppPacket(const QXmppNonza &nonza, std::shared_ptr> interface) + : QXmppPacket(serialize(nonza), nonza.isXmppStanza(), std::move(interface)) +{ +} + +QXmppPacket::QXmppPacket(const QByteArray &data, bool isXmppStanza, std::shared_ptr> interface) + : m_interface(std::move(interface)), + m_data(data), + m_isXmppStanza(isXmppStanza) +{ + m_interface->reportStarted(); } QByteArray QXmppPacket::data() const -- cgit v1.2.3