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.
This commit is contained in:
Ryan Huffman 2016-08-11 15:17:36 -07:00
parent b6620f128b
commit 473a7e9593

View file

@ -215,6 +215,15 @@ void PacketReceiver::handleVerifiedPacket(std::unique_ptr<udt::Packet> packet) {
_inPacketCount += 1;
_inByteCount += nlPacket->size();
SharedNodePointer matchingNode;
NodeType_t nodeType = NodeType::Unassigned;
if (!nlPacket->getSourceID().isNull()) {
auto nodeList = DependencyManager::get<LimitedNodeList>();
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<udt::Packet> pa
_inPacketCount += 1;
_inByteCount += nlPacket->size();
SharedNodePointer matchingNode;
NodeType_t nodeType = NodeType::Unassigned;
if (!nlPacket->getSourceID().isNull()) {
auto nodeList = DependencyManager::get<LimitedNodeList>();
matchingNode = nodeList->nodeWithUUID(nlPacket->getSourceID());
nodeType = matchingNode->getType();
}
emit dataReceived(nodeType, nlPacket->getPayloadSize());
auto key = std::pair<HifiSockAddr, udt::Packet::MessageNumber>(nlPacket->getSenderSockAddr(), nlPacket->getMessageNumber());
auto it = _pendingMessages.find(key);
QSharedPointer<ReceivedMessage> message;
@ -294,7 +312,6 @@ void PacketReceiver::handleVerifiedMessage(QSharedPointer<ReceivedMessage> 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<ReceivedMessage> 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) {