aboutsummaryrefslogtreecommitdiff
path: root/src/base/QXmppStreamManagement.cpp
diff options
context:
space:
mode:
authorLinus Jahn <lnj@kaidan.im>2021-09-03 18:17:40 +0200
committerLinus Jahn <lnj@kaidan.im>2021-09-03 20:42:34 +0200
commit040b7d9a8c7625f93e93690e47dbabb71ff87fd7 (patch)
tree15a2ad8b8b13c6beeb38c6438953b896992f699e /src/base/QXmppStreamManagement.cpp
parent0623aa38f2ead734dddea4cbad899a868f01cb1e (diff)
downloadqxmpp-040b7d9a8c7625f93e93690e47dbabb71ff87fd7.tar.gz
Refactor packet sending: Add SendSuccess/SendError
Diffstat (limited to 'src/base/QXmppStreamManagement.cpp')
-rw-r--r--src/base/QXmppStreamManagement.cpp21
1 files changed, 13 insertions, 8 deletions
diff --git a/src/base/QXmppStreamManagement.cpp b/src/base/QXmppStreamManagement.cpp
index 4d5f3540..39bfbf32 100644
--- a/src/base/QXmppStreamManagement.cpp
+++ b/src/base/QXmppStreamManagement.cpp
@@ -351,9 +351,6 @@ unsigned int QXmppStreamManager::lastIncomingSequenceNumber() const
void QXmppStreamManager::handleDisconnect()
{
m_enabled = false;
- for (auto &packet : m_unacknowledgedStanzas) {
- packet.reportResult(QXmpp::NotSent);
- }
}
void QXmppStreamManager::handleStart()
@@ -361,12 +358,20 @@ void QXmppStreamManager::handleStart()
m_enabled = false;
}
-void QXmppStreamManager::handlePacketSent(QXmppPacket &packet)
+void QXmppStreamManager::handlePacketSent(QXmppPacket &packet, bool sentData)
{
if (m_enabled && packet.isXmppStanza()) {
m_unacknowledgedStanzas.insert(++m_lastOutgoingSequenceNumber, packet);
sendAcknowledgementRequest();
} else {
+ if (sentData) {
+ packet.reportResult(QXmpp::SendSuccess { false });
+ } else {
+ packet.reportResult(QXmpp::SendError {
+ QStringLiteral("Couldn't write data to socket. No stream management enabled."),
+ QXmpp::SendError::SocketWriteError
+ });
+ }
packet.reportFinished();
}
}
@@ -405,7 +410,7 @@ void QXmppStreamManager::enableStreamManagement(bool resetSequenceNumber)
for (auto &packet : oldUnackedStanzas) {
m_unacknowledgedStanzas.insert(++m_lastOutgoingSequenceNumber, packet);
- stream->sendPacket(packet);
+ stream->sendData(packet.data());
}
sendAcknowledgementRequest();
@@ -414,7 +419,7 @@ void QXmppStreamManager::enableStreamManagement(bool resetSequenceNumber)
// resend unacked stanzas
if (!m_unacknowledgedStanzas.isEmpty()) {
for (auto &packet : m_unacknowledgedStanzas) {
- stream->sendPacket(packet);
+ stream->sendData(packet.data());
}
sendAcknowledgementRequest();
@@ -426,7 +431,7 @@ void QXmppStreamManager::setAcknowledgedSequenceNumber(unsigned int sequenceNumb
{
for (auto it = m_unacknowledgedStanzas.begin(); it != m_unacknowledgedStanzas.end();) {
if (it.key() <= sequenceNumber) {
- it->reportResult(QXmpp::Acknowledged);
+ it->reportResult(QXmpp::SendSuccess { true });
it->reportFinished();
it = m_unacknowledgedStanzas.erase(it);
} else {
@@ -477,7 +482,7 @@ void QXmppStreamManager::sendAcknowledgementRequest()
void QXmppStreamManager::resetCache()
{
for (auto &packet : m_unacknowledgedStanzas) {
- packet.reportResult(QXmpp::NotSent);
+ packet.reportResult(QXmpp::SendError { QStringLiteral("Disconnected"), QXmpp::SendError::Disconnected });
packet.reportFinished();
}