Implementation of Network status page
This commit is contained in:
parent
b3e0757b29
commit
2cdd61458f
7 changed files with 355 additions and 27 deletions
51
src/wa/server/util/ThroughputCalculator.java
Normal file
51
src/wa/server/util/ThroughputCalculator.java
Normal file
|
|
@ -0,0 +1,51 @@
|
|||
package wa.server.util;
|
||||
|
||||
/**
|
||||
* Created by Ziver Koc
|
||||
*/
|
||||
public class ThroughputCalculator {
|
||||
public static final float UPDATES_PER_SEC = 1;
|
||||
public static final double NANOSEC_PER_SECOND = 1000000000.0;
|
||||
|
||||
private boolean updated;
|
||||
private double throughput;
|
||||
private long previousTimeStamp;
|
||||
private long data_amount;
|
||||
private long total_data_amount;
|
||||
private float frequency = UPDATES_PER_SEC;
|
||||
|
||||
public void setTotalHandledData(long bytes){
|
||||
setHandledData(bytes - total_data_amount);
|
||||
total_data_amount = bytes;
|
||||
}
|
||||
public void setHandledData(long bytes){
|
||||
long currentTimeStamp = System.nanoTime();
|
||||
data_amount += bytes;
|
||||
if(currentTimeStamp - (NANOSEC_PER_SECOND/frequency) > previousTimeStamp) {
|
||||
throughput = data_amount / ((currentTimeStamp - previousTimeStamp) / NANOSEC_PER_SECOND);
|
||||
previousTimeStamp = currentTimeStamp;
|
||||
data_amount = 0;
|
||||
updated = true;
|
||||
}
|
||||
}
|
||||
|
||||
public double getByteThroughput(){
|
||||
setHandledData(0); // Update throughput
|
||||
updated = false;
|
||||
return throughput;
|
||||
}
|
||||
public double getBitThroughput(){
|
||||
return getByteThroughput()*8;
|
||||
}
|
||||
|
||||
public boolean isUpdated(){
|
||||
return updated;
|
||||
}
|
||||
|
||||
public void setFrequency(float frequency) {
|
||||
if(frequency < 0)
|
||||
this.frequency = UPDATES_PER_SEC;
|
||||
else
|
||||
this.frequency = frequency;
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue