Class AverageNoSync
java.lang.Object
com.biglybt.core.util.AverageNoSync
This class is used to compute average (mostly for speed transfer).
-
Field Summary
FieldsModifier and TypeFieldDescriptionprivate longprivate final intprivate final intprivate final intIt uses a simple array of longs to store values in a cycling way.private long[] -
Constructor Summary
ConstructorsModifierConstructorDescriptionprotectedAverageNoSync(int _refreshRate, int _period) Private constructor for an Average -
Method Summary
Modifier and TypeMethodDescriptionvoidaddValue(long value) Public method to add a value to the average, the time it is added is the time this method is called.voidclear()voidcloneFrom(AverageNoSync other) longThis method can be called to get the current average value.longgetAverage(int average_period) private Object[]doublegetDoubleAverageAsString(int precision) protected longstatic AverageNoSyncgetInstance(int refreshRate, int period) The way to get a new Average Object, it does some parameter checking.longfinal longgetSum()protected final longgetSum(int slots) private voidupdate(long timeFactor) This method is used to update the buffer that stores the values, in fact it mostly does clean-up over this buffer, erasing all values that have not been updated.
-
Field Details
-
refreshRate
private final int refreshRateIt uses a simple array of longs to store values in a cycling way. The array has 2 more elements than really needed to compute the average. One is the next one to be filled, and its value is always 0, and the other one is the one currently filled, which value is not taken into account for the average. -
period
private final int period -
nbElements
private final int nbElements -
lastUpdate
private long lastUpdate -
values
private long[] values
-
-
Constructor Details
-
AverageNoSync
protected AverageNoSync(int _refreshRate, int _period) Private constructor for an Average- Parameters:
_refreshRate- the refresh rate in ms_period- the period in s
-
-
Method Details
-
getInstance
The way to get a new Average Object, it does some parameter checking. refreshRate must be greater than 100, and period*1000 must be greater than refreshRate- Parameters:
refreshRate- in msperiod- in s- Returns:
- the newlly created Average, or null if parameters are wrong
-
clear
public void clear() -
cloneFrom
-
getCloneDetails
-
update
private void update(long timeFactor) This method is used to update the buffer that stores the values, in fact it mostly does clean-up over this buffer, erasing all values that have not been updated.- Parameters:
timeFactor- which is the currentTime divided by the refresh Rate
-
addValue
public void addValue(long value) Public method to add a value to the average, the time it is added is the time this method is called.- Parameters:
value- the value to be added to the Average
-
getAverage
public long getAverage()This method can be called to get the current average value.- Returns:
- the current Average computed.
-
getDoubleAverage
public double getDoubleAverage() -
getDoubleAverageAsString
-
getAverage
public long getAverage(int average_period) -
getPointValue
public long getPointValue() -
getSum
public final long getSum() -
getSum
protected final long getSum(int slots) -
getEffectiveTime
protected long getEffectiveTime()
-