Clang: Print message if message is lost

If there is a message counter mismatch it is very helpful to get message
content.

Change-Id: I4ea2526bd4b72010627e99de08ff9a8e64ca3d02
Reviewed-by: Tim Jenssen <tim.jenssen@theqtcompany.com>
This commit is contained in:
Marco Bubke
2016-06-27 16:10:16 +02:00
parent 04b2194781
commit 01316c28f2
5 changed files with 139 additions and 7 deletions

View File

@@ -41,19 +41,22 @@ ReadMessageBlock::ReadMessageBlock(QIODevice *ioDevice)
{
}
void ReadMessageBlock::checkIfMessageIsLost(QDataStream &in)
bool ReadMessageBlock::checkIfMessageIsLost(QDataStream &in)
{
qint64 currentMessageCounter;
in >> currentMessageCounter;
bool messageIsLost = false;
#ifndef DONT_CHECK_MESSAGE_COUNTER
bool messageLost = !((currentMessageCounter == 0 && messageCounter == 0) || (messageCounter + 1 == currentMessageCounter));
if (messageLost)
qWarning() << "client message lost: " << messageCounter << currentMessageCounter;
messageIsLost = !((currentMessageCounter == 0 && messageCounter == 0) || (messageCounter + 1 == currentMessageCounter));
if (messageIsLost)
qWarning() << "message lost: " << messageCounter << currentMessageCounter;
#endif
messageCounter = currentMessageCounter;
return messageIsLost;
}
MessageEnvelop ReadMessageBlock::read()
@@ -63,8 +66,12 @@ MessageEnvelop ReadMessageBlock::read()
MessageEnvelop message;
if (isTheWholeMessageReadable(in)) {
checkIfMessageIsLost(in);
bool messageIsLost = checkIfMessageIsLost(in);
in >> message;
if (messageIsLost)
qDebug() << message;
}
return message;