From 0fc5d5542d6fa0de1805aa1145ef96418412c8f4 Mon Sep 17 00:00:00 2001 From: Thorvald Natvig Date: Fri, 15 Jan 2010 01:55:57 +0100 Subject: [PATCH] Fix bandwidth estimate for UserInformation and Ice --- src/murmur/Server.cpp | 25 ++++++++++++++++++------- 1 file changed, 18 insertions(+), 7 deletions(-) diff --git a/src/murmur/Server.cpp b/src/murmur/Server.cpp index 1088b3233..b84079a54 100644 --- a/src/murmur/Server.cpp +++ b/src/murmur/Server.cpp @@ -481,15 +481,26 @@ int BandwidthRecord::idleSeconds() const { } int BandwidthRecord::bandwidth() const { - int sincelast = static_cast(a_qtWhen[(iRecNum + N_BANDWIDTH_SLOTS - 1) % N_BANDWIDTH_SLOTS].elapsed() / 10000LL); - int todo = N_BANDWIDTH_SLOTS - sincelast; - if (todo < 0) + int sum = 0; + int records = 0; + quint64 elapsed = 0ULL; + + for(int i=1;i 1000000ULL) { + break; + } else { + ++records; + sum += a_iBW[idx]; + elapsed = e; + } + } + + if (elapsed < 250000ULL) return 0; - int sum = 0; - for (int i=1;i<=todo;++i) - sum += a_iBW[(iRecNum+N_BANDWIDTH_SLOTS - i) % N_BANDWIDTH_SLOTS]; - return (sum*100)/N_BANDWIDTH_SLOTS; + return static_cast((sum * 1000000ULL) / elapsed); } ExecEvent::ExecEvent(boost::function f) : QEvent(static_cast(EXEC_QEVENT)) {