Fix bandwidth calulation for client/server
This commit is contained in:
parent
dbb44e1374
commit
4f55687b38
|
@ -7,13 +7,13 @@ import java.util.List;
|
|||
|
||||
public class BandwidthMeter {
|
||||
|
||||
public static final Duration MEASURE_TIMEFRAME = Duration.ofSeconds(10);
|
||||
private static long[] records = new long[10000];
|
||||
private static int head = 0;
|
||||
private static int tail = 0;
|
||||
private static List<Listener> listeners = new ArrayList<>();
|
||||
private static long lastUpdate = 0;
|
||||
private static long throughput = 0;
|
||||
private static Duration timeframe = Duration.ofMinutes(1);
|
||||
|
||||
private BandwidthMeter() {
|
||||
}
|
||||
|
@ -25,9 +25,9 @@ public class BandwidthMeter {
|
|||
if (lastUpdate + 1000 < System.currentTimeMillis()) {
|
||||
Instant last = Instant.ofEpochMilli(lastUpdate);
|
||||
Instant now = Instant.now();
|
||||
Duration d = Duration.between(last, now);
|
||||
timeframe = Duration.between(last, now);
|
||||
calculateThroughput();
|
||||
fireEvent(getThroughput(), d);
|
||||
fireEvent(getThroughput(), timeframe);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -52,6 +52,7 @@ public class BandwidthMeter {
|
|||
|
||||
public static void setThroughput(long bytes, Duration d) {
|
||||
records[0] = bytes;
|
||||
timeframe = d;
|
||||
fireEvent(bytes, d);
|
||||
}
|
||||
|
||||
|
@ -69,6 +70,10 @@ public class BandwidthMeter {
|
|||
return throughput;
|
||||
}
|
||||
|
||||
public static Duration getTimeframe() {
|
||||
return timeframe;
|
||||
}
|
||||
|
||||
public static void addListener(Listener l) {
|
||||
listeners.add(l);
|
||||
}
|
||||
|
|
|
@ -244,7 +244,7 @@ public class RemoteRecorder implements Recorder {
|
|||
spaceTotal = resp.getLong("spaceTotal");
|
||||
spaceFree = resp.getLong("spaceFree");
|
||||
long throughput = resp.getLong("throughput");
|
||||
Duration timeframe = Duration.ofSeconds(resp.getInt("throughputTimeframe"));
|
||||
Duration timeframe = Duration.ofMillis(resp.getInt("throughputTimeframe"));
|
||||
BandwidthMeter.setThroughput(throughput, timeframe);
|
||||
long minimumSpaceLeftInBytes = resp.optLong("minimumSpaceLeftInBytes");
|
||||
if (minimumSpaceLeftInBytes > 0 && minimumSpaceLeftInBytes >= spaceFree
|
||||
|
|
|
@ -214,7 +214,7 @@ public class RecorderServlet extends AbstractCtbrecServlet {
|
|||
jsonResponse.put("spaceTotal", recorder.getTotalSpaceBytes());
|
||||
jsonResponse.put("spaceFree", recorder.getFreeSpaceBytes());
|
||||
jsonResponse.put("throughput", BandwidthMeter.getThroughput());
|
||||
jsonResponse.put("throughputTimeframe", BandwidthMeter.MEASURE_TIMEFRAME.getSeconds());
|
||||
jsonResponse.put("throughputTimeframe", BandwidthMeter.getTimeframe().toMillis());
|
||||
jsonResponse.put("minimumSpaceLeftInBytes", Config.getInstance().getSettings().minimumSpaceLeftInBytes);
|
||||
resp.getWriter().write(jsonResponse.toString());
|
||||
break;
|
||||
|
|
Loading…
Reference in New Issue