From 72649f1ac9377484a4945aa9acd0e8aadb92c152 Mon Sep 17 00:00:00 2001 From: ZappoMan Date: Thu, 19 Dec 2013 13:29:45 -0800 Subject: [PATCH] adjust flight times correctly in stats tracking --- interface/src/Application.cpp | 8 ++++---- interface/src/ui/VoxelStatsDialog.cpp | 7 +++---- libraries/octree/src/OctreeSceneStats.cpp | 5 +++-- libraries/octree/src/OctreeSceneStats.h | 3 ++- 4 files changed, 12 insertions(+), 11 deletions(-) diff --git a/interface/src/Application.cpp b/interface/src/Application.cpp index 7f976798a1..a51c572b8f 100644 --- a/interface/src/Application.cpp +++ b/interface/src/Application.cpp @@ -4237,15 +4237,15 @@ void Application::trackIncomingVoxelPacket(unsigned char* messageData, ssize_t m const HifiSockAddr& senderSockAddr, bool wasStatsPacket) { // Attempt to identify the sender from it's address. - Node* voxelServer = NodeList::getInstance()->nodeWithAddress(senderSockAddr); - if (voxelServer) { - QUuid nodeUUID = voxelServer->getUUID(); + Node* serverNode = NodeList::getInstance()->nodeWithAddress(senderSockAddr); + if (serverNode) { + QUuid nodeUUID = serverNode->getUUID(); // now that we know the node ID, let's add these stats to the stats for that node... _voxelSceneStatsLock.lockForWrite(); if (_octreeServerSceneStats.find(nodeUUID) != _octreeServerSceneStats.end()) { VoxelSceneStats& stats = _octreeServerSceneStats[nodeUUID]; - stats.trackIncomingOctreePacket(messageData, messageLength, wasStatsPacket); + stats.trackIncomingOctreePacket(messageData, messageLength, wasStatsPacket, serverNode->getClockSkewUsec()); } _voxelSceneStatsLock.unlock(); } diff --git a/interface/src/ui/VoxelStatsDialog.cpp b/interface/src/ui/VoxelStatsDialog.cpp index db2836ab43..3a2c8468ad 100644 --- a/interface/src/ui/VoxelStatsDialog.cpp +++ b/interface/src/ui/VoxelStatsDialog.cpp @@ -345,11 +345,10 @@ void VoxelStatsDialog::showOctreeServersOfType(int& serverCount, NODE_TYPE serve QString incomingOutOfOrderString = locale.toString((uint)stats.getIncomingOutOfOrder()); QString incomingLikelyLostString = locale.toString((uint)stats.getIncomingLikelyLost()); - float clockSkewInMS = (float)node->getClockSkewUsec() / (float)USECS_PER_MSEC; - float adjustedFlightTime = stats.getIncomingFlightTimeAverage() + clockSkewInMS; - QString incomingFlightTimeString = locale.toString((int)adjustedFlightTime); + int clockSkewInMS = node->getClockSkewUsec() / (int)USECS_PER_MSEC; + QString incomingFlightTimeString = locale.toString((int)stats.getIncomingFlightTimeAverage()); QString incomingPingTimeString = locale.toString(node->getPingMs()); - QString incomingClockSkewString = locale.toString((int)clockSkewInMS); + QString incomingClockSkewString = locale.toString(clockSkewInMS); serverDetails << "
" << "Incoming Packets: " << incomingPacketsString.toLocal8Bit().constData() << diff --git a/libraries/octree/src/OctreeSceneStats.cpp b/libraries/octree/src/OctreeSceneStats.cpp index 076e2cc118..9edaf63698 100644 --- a/libraries/octree/src/OctreeSceneStats.cpp +++ b/libraries/octree/src/OctreeSceneStats.cpp @@ -798,7 +798,8 @@ const char* OctreeSceneStats::getItemValue(Item item) { return _itemValueBuffer; } -void OctreeSceneStats::trackIncomingOctreePacket(unsigned char* messageData, ssize_t messageLength, bool wasStatsPacket) { +void OctreeSceneStats::trackIncomingOctreePacket(unsigned char* messageData, ssize_t messageLength, + bool wasStatsPacket, int nodeClockSkewUsec) { _incomingPacket++; _incomingBytes += messageLength; if (!wasStatsPacket) { @@ -820,7 +821,7 @@ void OctreeSceneStats::trackIncomingOctreePacket(unsigned char* messageData, ssi //bool packetIsCompressed = oneAtBit(flags, PACKET_IS_COMPRESSED_BIT); OCTREE_PACKET_SENT_TIME arrivedAt = usecTimestampNow(); - int flightTime = arrivedAt - sentAt; + int flightTime = arrivedAt - sentAt + nodeClockSkewUsec; const int USECS_PER_MSEC = 1000; float flightTimeMsecs = flightTime / USECS_PER_MSEC; _incomingFlightTimeAverage.updateAverage(flightTimeMsecs); diff --git a/libraries/octree/src/OctreeSceneStats.h b/libraries/octree/src/OctreeSceneStats.h index 0d3490a31d..833568f6f3 100644 --- a/libraries/octree/src/OctreeSceneStats.h +++ b/libraries/octree/src/OctreeSceneStats.h @@ -153,7 +153,8 @@ public: unsigned long getLastFullElapsedTime() const { return _lastFullElapsed; } // Used in client implementations to track individual octree packets - void trackIncomingOctreePacket(unsigned char* messageData, ssize_t messageLength, bool wasStatsPacket); + void trackIncomingOctreePacket(unsigned char* messageData, ssize_t messageLength, + bool wasStatsPacket, int nodeClockSkewUsec); unsigned int getIncomingPackets() const { return _incomingPacket; } unsigned long getIncomingBytes() const { return _incomingBytes; }