From 043fcae56af989b5c65a14f8c41c5148486c2f6e Mon Sep 17 00:00:00 2001 From: Mygod Date: Wed, 3 Oct 2018 15:06:37 +0800 Subject: [PATCH] Fix real-time traffic not accumulating all results --- .../java/be/mygod/vpnhotspot/client/ClientsFragment.kt | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/mobile/src/main/java/be/mygod/vpnhotspot/client/ClientsFragment.kt b/mobile/src/main/java/be/mygod/vpnhotspot/client/ClientsFragment.kt index 5b159d59..de6b6800 100644 --- a/mobile/src/main/java/be/mygod/vpnhotspot/client/ClientsFragment.kt +++ b/mobile/src/main/java/be/mygod/vpnhotspot/client/ClientsFragment.kt @@ -163,9 +163,14 @@ class ClientsFragment : Fragment(), ServiceConnection { fun updateTraffic(newRecords: Collection, oldRecords: LongSparseArray) { val clientsLookup = clientsLookup ?: return + val seenClients = HashSet() for (newRecord in newRecords) { val oldRecord = oldRecords[newRecord.previousId ?: continue] ?: continue val client = clientsLookup[newRecord.mac] + if (seenClients.add(client)) { + client.sendRate = 0 + client.receiveRate = 0 + } val elapsed = newRecord.timestamp - oldRecord.timestamp if (elapsed == 0L) { check(newRecord.sentPackets == oldRecord.sentPackets) @@ -173,8 +178,8 @@ class ClientsFragment : Fragment(), ServiceConnection { check(newRecord.receivedPackets == oldRecord.receivedPackets) check(newRecord.receivedBytes == oldRecord.receivedBytes) } else { - client.sendRate = (newRecord.sentBytes - oldRecord.sentBytes) * 1000 / elapsed - client.receiveRate = (newRecord.receivedBytes - oldRecord.receivedBytes) * 1000 / elapsed + client.sendRate += (newRecord.sentBytes - oldRecord.sentBytes) * 1000 / elapsed + client.receiveRate += (newRecord.receivedBytes - oldRecord.receivedBytes) * 1000 / elapsed client.notifyPropertyChanged(BR.description) } }