diff --git a/src/main/java/org/whispersystems/textsecuregcm/metrics/NetworkGauge.java b/src/main/java/org/whispersystems/textsecuregcm/metrics/NetworkGauge.java index 245d33dd..d3216786 100644 --- a/src/main/java/org/whispersystems/textsecuregcm/metrics/NetworkGauge.java +++ b/src/main/java/org/whispersystems/textsecuregcm/metrics/NetworkGauge.java @@ -9,7 +9,7 @@ import java.io.File; import java.io.FileReader; import java.io.IOException; -public abstract class NetworkGauge implements Gauge { +public abstract class NetworkGauge implements Gauge { protected Pair getSentReceived() throws IOException { File proc = new File("/proc/net/dev"); diff --git a/src/main/java/org/whispersystems/textsecuregcm/metrics/NetworkReceivedGauge.java b/src/main/java/org/whispersystems/textsecuregcm/metrics/NetworkReceivedGauge.java index 647a69c9..eda26362 100644 --- a/src/main/java/org/whispersystems/textsecuregcm/metrics/NetworkReceivedGauge.java +++ b/src/main/java/org/whispersystems/textsecuregcm/metrics/NetworkReceivedGauge.java @@ -13,23 +13,31 @@ public class NetworkReceivedGauge extends NetworkGauge { private long lastTimestamp; private long lastReceived; + public NetworkReceivedGauge() { + try { + this.lastTimestamp = System.currentTimeMillis(); + this.lastReceived = getSentReceived().second(); + } catch (IOException e) { + logger.warn(NetworkReceivedGauge.class.getSimpleName(), e); + } + } + @Override - public Long getValue() { + public Double getValue() { try { long timestamp = System.currentTimeMillis(); Pair sentAndReceived = getSentReceived(); - long result = 0; + double bytesReceived = sentAndReceived.second() - lastReceived; + double secondsElapsed = (timestamp - this.lastTimestamp) / 1000; + double result = bytesReceived / secondsElapsed; - if (lastTimestamp != 0) { - result = sentAndReceived.second() - lastReceived; - lastReceived = sentAndReceived.second(); - } + this.lastTimestamp = timestamp; + this.lastReceived = sentAndReceived.second(); - lastTimestamp = timestamp; return result; } catch (IOException e) { logger.warn("NetworkReceivedGauge", e); - return -1L; + return -1D; } } diff --git a/src/main/java/org/whispersystems/textsecuregcm/metrics/NetworkSentGauge.java b/src/main/java/org/whispersystems/textsecuregcm/metrics/NetworkSentGauge.java index 0e922a7b..73939f93 100644 --- a/src/main/java/org/whispersystems/textsecuregcm/metrics/NetworkSentGauge.java +++ b/src/main/java/org/whispersystems/textsecuregcm/metrics/NetworkSentGauge.java @@ -13,23 +13,31 @@ public class NetworkSentGauge extends NetworkGauge { private long lastTimestamp; private long lastSent; - @Override - public Long getValue() { + public NetworkSentGauge() { try { - long timestamp = System.currentTimeMillis(); - Pair sentAndReceived = getSentReceived(); - long result = 0; + this.lastTimestamp = System.currentTimeMillis(); + this.lastSent = getSentReceived().first(); + } catch (IOException e) { + logger.warn(NetworkSentGauge.class.getSimpleName(), e); + } + } - if (lastTimestamp != 0) { - result = sentAndReceived.first() - lastSent; - lastSent = sentAndReceived.first(); - } + @Override + public Double getValue() { + try { + long timestamp = System.currentTimeMillis(); + Pair sentAndReceived = getSentReceived(); + double bytesTransmitted = sentAndReceived.first() - lastSent; + double secondsElapsed = (timestamp - this.lastTimestamp) / 1000; + double result = bytesTransmitted / secondsElapsed; + + this.lastSent = sentAndReceived.first(); + this.lastTimestamp = timestamp; - lastTimestamp = timestamp; return result; } catch (IOException e) { logger.warn("NetworkSentGauge", e); - return -1L; + return -1D; } } }