From 473a7e95934e6e13cddce46ba99d9348aef86407 Mon Sep 17 00:00:00 2001 From: Ryan Huffman Date: Thu, 11 Aug 2016 15:17:36 -0700 Subject: [PATCH] Fix bandwidth calculations not including the full size of reliable ordered messages For reliable ordered messages, we were: * only tracking bandwidth for the first few packets of a message IF a message handler opted in to receiving pending (unfinished) messages. * tracking the entire thing all at once, when the entire messages was received. --- libraries/networking/src/PacketReceiver.cpp | 20 ++++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/libraries/networking/src/PacketReceiver.cpp b/libraries/networking/src/PacketReceiver.cpp index 530efc5fb3..df38a68515 100644 --- a/libraries/networking/src/PacketReceiver.cpp +++ b/libraries/networking/src/PacketReceiver.cpp @@ -215,6 +215,15 @@ void PacketReceiver::handleVerifiedPacket(std::unique_ptr packet) { _inPacketCount += 1; _inByteCount += nlPacket->size(); + SharedNodePointer matchingNode; + NodeType_t nodeType = NodeType::Unassigned; + if (!nlPacket->getSourceID().isNull()) { + auto nodeList = DependencyManager::get(); + matchingNode = nodeList->nodeWithUUID(nlPacket->getSourceID()); + nodeType = matchingNode->getType(); + } + emit dataReceived(nodeType, nlPacket->getPayloadSize()); + handleVerifiedMessage(receivedMessage, true); } @@ -224,6 +233,15 @@ void PacketReceiver::handleVerifiedMessagePacket(std::unique_ptr pa _inPacketCount += 1; _inByteCount += nlPacket->size(); + SharedNodePointer matchingNode; + NodeType_t nodeType = NodeType::Unassigned; + if (!nlPacket->getSourceID().isNull()) { + auto nodeList = DependencyManager::get(); + matchingNode = nodeList->nodeWithUUID(nlPacket->getSourceID()); + nodeType = matchingNode->getType(); + } + emit dataReceived(nodeType, nlPacket->getPayloadSize()); + auto key = std::pair(nlPacket->getSenderSockAddr(), nlPacket->getMessageNumber()); auto it = _pendingMessages.find(key); QSharedPointer message; @@ -294,7 +312,6 @@ void PacketReceiver::handleVerifiedMessage(QSharedPointer recei PacketType packetType = receivedMessage->getType(); if (matchingNode) { - emit dataReceived(matchingNode->getType(), receivedMessage->getSize()); matchingNode->recordBytesReceived(receivedMessage->getSize()); QMetaMethod metaMethod = listener.method; @@ -326,7 +343,6 @@ void PacketReceiver::handleVerifiedMessage(QSharedPointer recei } } else { // qDebug() << "Got verified unsourced packet list: " << QString(nlPacketList->getMessage()); - emit dataReceived(NodeType::Unassigned, receivedMessage->getSize()); // one final check on the QPointer before we invoke if (listener.object) {