diff --git a/interface/src/Application.h b/interface/src/Application.h index a706c38f58..ed51e085b2 100644 --- a/interface/src/Application.h +++ b/interface/src/Application.h @@ -52,7 +52,6 @@ #include #include "avatar/MyAvatar.h" -#include "BandwidthRecorder.h" #include "FancyCamera.h" #include "ConnectionMonitor.h" #include "CursorManager.h" diff --git a/libraries/networking/src/BandwidthRecorder.cpp b/libraries/networking/src/BandwidthRecorder.cpp index 5ad3494017..80276dba5a 100644 --- a/libraries/networking/src/BandwidthRecorder.cpp +++ b/libraries/networking/src/BandwidthRecorder.cpp @@ -18,7 +18,7 @@ BandwidthRecorder::Channel::Channel() { } -float BandwidthRecorder::Channel::getAverageInputPacketsPerSecond() { +float BandwidthRecorder::Channel::getAverageInputPacketsPerSecond() const { float averageTimeBetweenPackets = _input.getEventDeltaAverage(); if (averageTimeBetweenPackets > 0.0f) { return (1.0f / averageTimeBetweenPackets); @@ -26,7 +26,7 @@ float BandwidthRecorder::Channel::getAverageInputPacketsPerSecond() { return 0.0f; } -float BandwidthRecorder::Channel::getAverageOutputPacketsPerSecond() { +float BandwidthRecorder::Channel::getAverageOutputPacketsPerSecond() const { float averageTimeBetweenPackets = _output.getEventDeltaAverage(); if (averageTimeBetweenPackets > 0.0f) { return (1.0f / averageTimeBetweenPackets); @@ -34,11 +34,11 @@ float BandwidthRecorder::Channel::getAverageOutputPacketsPerSecond() { return 0.0f; } -float BandwidthRecorder::Channel::getAverageInputKilobitsPerSecond() { +float BandwidthRecorder::Channel::getAverageInputKilobitsPerSecond() const { return (_input.getAverageSampleValuePerSecond() * (8.0f / 1000)); } -float BandwidthRecorder::Channel::getAverageOutputKilobitsPerSecond() { +float BandwidthRecorder::Channel::getAverageOutputKilobitsPerSecond() const { return (_output.getAverageSampleValuePerSecond() * (8.0f / 1000)); } @@ -77,35 +77,35 @@ void BandwidthRecorder::updateOutboundData(const quint8 channelType, const int s _channels[channelType]->updateOutputAverage(sample); } -float BandwidthRecorder::getAverageInputPacketsPerSecond(const quint8 channelType) { +float BandwidthRecorder::getAverageInputPacketsPerSecond(const quint8 channelType) const { if (! _channels[channelType]) { return 0.0f; } return _channels[channelType]->getAverageInputPacketsPerSecond(); } -float BandwidthRecorder::getAverageOutputPacketsPerSecond(const quint8 channelType) { +float BandwidthRecorder::getAverageOutputPacketsPerSecond(const quint8 channelType) const { if (! _channels[channelType]) { return 0.0f; } return _channels[channelType]->getAverageOutputPacketsPerSecond(); } -float BandwidthRecorder::getAverageInputKilobitsPerSecond(const quint8 channelType) { +float BandwidthRecorder::getAverageInputKilobitsPerSecond(const quint8 channelType) const { if (! _channels[channelType]) { return 0.0f; } return _channels[channelType]->getAverageInputKilobitsPerSecond(); } -float BandwidthRecorder::getAverageOutputKilobitsPerSecond(const quint8 channelType) { +float BandwidthRecorder::getAverageOutputKilobitsPerSecond(const quint8 channelType) const { if (! _channels[channelType]) { return 0.0f; } return _channels[channelType]->getAverageOutputKilobitsPerSecond(); } -float BandwidthRecorder::getTotalAverageInputPacketsPerSecond() { +float BandwidthRecorder::getTotalAverageInputPacketsPerSecond() const { float result = 0.0f; for (uint i=0; i #include -#include "BandwidthRecorder.h" #include "NetworkLogging.h" #include #include "NodeType.h" @@ -230,35 +229,18 @@ QDebug operator<<(QDebug debug, const NetworkPeer &peer) { return debug; } - -// FIXME this is a temporary implementation to determine if this is the right approach. -// If so, migrate the BandwidthRecorder into the NetworkPeer class -using BandwidthRecorderPtr = QSharedPointer; -static QHash PEER_BANDWIDTH; - -BandwidthRecorder& getBandwidthRecorder(const QUuid & uuid) { - if (!PEER_BANDWIDTH.count(uuid)) { - PEER_BANDWIDTH.insert(uuid, QSharedPointer::create()); - } - return *PEER_BANDWIDTH[uuid].data(); -} - void NetworkPeer::recordBytesSent(int count) const { - auto& bw = getBandwidthRecorder(_uuid); - bw.updateOutboundData(0, count); + _bandwidthRecorder.updateOutboundData(0, count); } void NetworkPeer::recordBytesReceived(int count) const { - auto& bw = getBandwidthRecorder(_uuid); - bw.updateInboundData(0, count); + _bandwidthRecorder.updateInboundData(0, count); } float NetworkPeer::getOutboundBandwidth() const { - auto& bw = getBandwidthRecorder(_uuid); - return bw.getAverageOutputKilobitsPerSecond(0); + return _bandwidthRecorder.getAverageOutputKilobitsPerSecond(0); } float NetworkPeer::getInboundBandwidth() const { - auto& bw = getBandwidthRecorder(_uuid); - return bw.getAverageInputKilobitsPerSecond(0); + return _bandwidthRecorder.getAverageInputKilobitsPerSecond(0); } diff --git a/libraries/networking/src/NetworkPeer.h b/libraries/networking/src/NetworkPeer.h index 462daa1ed2..4688498a96 100644 --- a/libraries/networking/src/NetworkPeer.h +++ b/libraries/networking/src/NetworkPeer.h @@ -18,8 +18,9 @@ #include #include -#include "UUID.h" +#include "BandwidthRecorder.h" #include "HifiSockAddr.h" +#include "UUID.h" const QString ICE_SERVER_HOSTNAME = "localhost"; const quint16 ICE_SERVER_DEFAULT_PORT = 7337; @@ -113,6 +114,8 @@ protected: HifiSockAddr _symmetricSocket; HifiSockAddr* _activeSocket; + mutable BandwidthRecorder _bandwidthRecorder; + quint64 _wakeTimestamp; std::atomic_ullong _lastHeardMicrostamp;