diff options
author | Konstantin Ritt <ritt.ks@gmail.com> | 2020-02-27 05:23:39 +0300 |
---|---|---|
committer | Konstantin Ritt <ritt.ks@gmail.com> | 2020-04-02 02:39:08 +0300 |
commit | c561f28d7e3df0f4e33e016eb164d68a2cca0ce2 (patch) | |
tree | 83e7424922b7c7e67c92647e9b0a09586ebe346d | |
parent | a97d917b40f95341753b78e8a6a2b6a734f275c0 (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.cpp | 37 | ||||
-rw-r--r-- | src/mqtt/qmqttconnection_p.h | 3 |
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(); |