summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKonstantin Ritt <ritt.ks@gmail.com>2020-02-27 05:23:39 +0300
committerKonstantin Ritt <ritt.ks@gmail.com>2020-04-02 02:39:08 +0300
commitc561f28d7e3df0f4e33e016eb164d68a2cca0ce2 (patch)
tree83e7424922b7c7e67c92647e9b0a09586ebe346d
parenta97d917b40f95341753b78e8a6a2b6a734f275c0 (diff)
QMqttConnection: code deduplication
squash finalize_pubAckRecComp() with finalize_pubrel() Change-Id: I1a14d1ca0efccbfc58edafe0eaf27d58543ac82a Reviewed-by: Maurice Kalinowski <maurice.kalinowski@qt.io>
-rw-r--r--src/mqtt/qmqttconnection.cpp37
-rw-r--r--src/mqtt/qmqttconnection_p.h3
2 files changed, 13 insertions, 27 deletions
diff --git a/src/mqtt/qmqttconnection.cpp b/src/mqtt/qmqttconnection.cpp
index d5aef50..76c04c9 100644
--- a/src/mqtt/qmqttconnection.cpp
+++ b/src/mqtt/qmqttconnection.cpp
@@ -1586,9 +1586,9 @@ void QMqttConnection::finalize_publish()
sendControlPublishReceive(id);
}
-void QMqttConnection::finalize_pubAckRecComp()
+void QMqttConnection::finalize_pubAckRecRelComp()
{
- qCDebug(lcMqttConnectionVerbose) << "Finalize PUBACK/REC/COMP";
+ qCDebug(lcMqttConnectionVerbose) << "Finalize PUBACK/REC/REL/COMP";
const quint16 id = readBufferTyped<quint16>(&m_missingData);
QMqttMessageStatusProperties properties;
@@ -1599,6 +1599,14 @@ void QMqttConnection::finalize_pubAckRecComp()
if (m_missingData > 0)
readMessageStatusProperties(properties);
}
+
+ if ((m_currentPacket & 0xF0) == QMqttControlPacket::PUBREL) {
+ qCDebug(lcMqttConnectionVerbose) << " PUBREL:" << id;
+ emit m_clientPrivate->m_client->messageStatusChanged(id, QMqtt::MessageStatus::Released, properties);
+ sendControlPublishComp(id);
+ return;
+ }
+
if ((m_currentPacket & 0xF0) == QMqttControlPacket::PUBCOMP) {
qCDebug(lcMqttConnectionVerbose) << " PUBCOMP:" << id;
auto pendingRelease = m_pendingReleaseMessages.take(id);
@@ -1626,25 +1634,6 @@ void QMqttConnection::finalize_pubAckRecComp()
}
}
-void QMqttConnection::finalize_pubrel()
-{
- const quint16 id = readBufferTyped<quint16>(&m_missingData);
-
- qCDebug(lcMqttConnectionVerbose) << "Finalize PUBREL:" << id;
-
- QMqttMessageStatusProperties properties;
- if (m_clientPrivate->m_protocolVersion == QMqttClient::MQTT_5_0 && m_missingData > 0) {
- const quint8 reasonCode = readBufferTyped<quint8>(&m_missingData);
- properties.data->reasonCode = QMqtt::ReasonCode(reasonCode);
- if (m_missingData > 0)
- readMessageStatusProperties(properties);
- }
-
- emit m_clientPrivate->m_client->messageStatusChanged(id, QMqtt::MessageStatus::Released, properties);
-
- sendControlPublishComp(id);
-}
-
void QMqttConnection::finalize_pingresp()
{
qCDebug(lcMqttConnectionVerbose) << "Finalize PINGRESP";
@@ -1683,15 +1672,13 @@ bool QMqttConnection::processDataHelper()
break;
case QMqttControlPacket::PUBACK:
case QMqttControlPacket::PUBREC:
+ case QMqttControlPacket::PUBREL:
case QMqttControlPacket::PUBCOMP:
- finalize_pubAckRecComp();
+ finalize_pubAckRecRelComp();
break;
case QMqttControlPacket::PINGRESP:
finalize_pingresp();
break;
- case QMqttControlPacket::PUBREL:
- finalize_pubrel();
- break;
default:
qCDebug(lcMqttConnection) << "Unknown packet to finalize.";
closeConnection(QMqttClient::ProtocolViolation);
diff --git a/src/mqtt/qmqttconnection_p.h b/src/mqtt/qmqttconnection_p.h
index 456cd5a..0dd489a 100644
--- a/src/mqtt/qmqttconnection_p.h
+++ b/src/mqtt/qmqttconnection_p.h
@@ -120,8 +120,7 @@ private:
void finalize_suback();
void finalize_unsuback();
void finalize_publish();
- void finalize_pubAckRecComp();
- void finalize_pubrel();
+ void finalize_pubAckRecRelComp();
void finalize_pingresp();
void processData();
bool processDataHelper();