diff --git a/src/steamnetworkingsockets/steamnetworking_statsutils.h b/src/steamnetworkingsockets/steamnetworking_statsutils.h index 27e8b70..de5e8e5 100644 --- a/src/steamnetworkingsockets/steamnetworking_statsutils.h +++ b/src/steamnetworkingsockets/steamnetworking_statsutils.h @@ -60,33 +60,29 @@ struct Rate_t { void Reset() { memset( this, 0, sizeof(*this) ); } - int64 m_nTotal; int64 m_nCurrentInterval; - //int64 m_nCurrentLongInterval; + int64 m_nAccumulator; // does not include the currentinterval float m_flRate; - float m_flPeakRate; + + int64 Total() const { return m_nAccumulator + m_nCurrentInterval; } inline void Process( int64 nIncrement ) { - m_nTotal += nIncrement; m_nCurrentInterval += nIncrement; - //m_nCurrentLongInterval += nIncrement; } inline void UpdateInterval( float flIntervalDuration ) { m_flRate = float(m_nCurrentInterval) / flIntervalDuration; - m_flPeakRate = Max( m_flPeakRate, m_flRate ); + m_nAccumulator += m_nCurrentInterval; m_nCurrentInterval = 0; } inline void operator+=( const Rate_t &x ) { - m_nTotal += x.m_nTotal; m_nCurrentInterval += x.m_nCurrentInterval; - //m_nCurrentLongInterval += x.m_nCurrentLongInterval; + m_nAccumulator += x.m_nAccumulator; m_flRate += x.m_flRate; - // !NOTE: Don't aggregate peak. It's ambiguous whether we should take the sum or max. } }; diff --git a/src/steamnetworkingsockets/steamnetworkingsockets_stats.cpp b/src/steamnetworkingsockets/steamnetworkingsockets_stats.cpp index 60d52a2..786b5fb 100644 --- a/src/steamnetworkingsockets/steamnetworkingsockets_stats.cpp +++ b/src/steamnetworkingsockets/steamnetworkingsockets_stats.cpp @@ -643,10 +643,10 @@ void LinkStatsTrackerBase::GetInstantaneousStats( SteamDatagramLinkInstantaneous void LinkStatsTrackerBase::GetLifetimeStats( SteamDatagramLinkLifetimeStats &s ) const { - s.m_nPacketsSent = m_sent.m_packets.m_nTotal; - s.m_nBytesSent = m_sent.m_bytes.m_nTotal; - s.m_nPacketsRecv = m_recv.m_packets.m_nTotal; - s.m_nBytesRecv = m_recv.m_bytes.m_nTotal; + s.m_nPacketsSent = m_sent.m_packets.Total(); + s.m_nBytesSent = m_sent.m_bytes.Total(); + s.m_nPacketsRecv = m_recv.m_packets.Total(); + s.m_nBytesRecv = m_recv.m_bytes.Total(); s.m_nPktsRecvSequenced = m_nPktsRecvSequenced; s.m_nPktsRecvDropped = m_nPktsRecvDropped; s.m_nPktsRecvOutOfOrder = m_nPktsRecvOutOfOrder;