Class SpeedManagerAlgorithmProviderPingMap
java.lang.Object
com.biglybt.core.speedmanager.impl.v2.SpeedManagerAlgorithmProviderPingMap
- All Implemented Interfaces:
COConfigurationListener
,SpeedManagerAlgorithmProvider
public class SpeedManagerAlgorithmProviderPingMap
extends Object
implements SpeedManagerAlgorithmProvider, COConfigurationListener
-
Field Summary
FieldsModifier and TypeFieldDescriptionprivate final SpeedManagerAlgorithmProviderAdapter
private int
private int
private boolean
private int
private float
private final SpeedLimitMonitor
private static int
(package private) final PingSourceManager
private List
(package private) int
private static boolean
private long
Fields inherited from interface com.biglybt.core.speedmanager.impl.SpeedManagerAlgorithmProvider
UPDATE_PERIOD_MILLIS
-
Constructor Summary
ConstructorsConstructorDescription -
Method Summary
Modifier and TypeMethodDescriptionvoid
calculate
(SpeedManagerPingSource[] sources) Called whenever a new set of ping values is available for processingprivate float
calculateDownTickMultiple
(int c) Want to drop rate faster then increase.private boolean
Variance PingMap data is the metrics used.private float
calculateUpTickMultiple
(int c) Want to rise much slower then drop.void
private float
The longer were get the same signal the stronger it is.private float
convertTestMetricToSignal
(float testMetric) void
destroy()
private float
determineSignalStrength
(float lastMetric) private void
boolean
Indicates whether or not the provider is adjusting download as well as upload limitsint
Returns the current view of when choking occursint
int
Various getters for interesting info shown in stats viewint
int
protected void
private void
logCurrentData
(int downRate, int currDownLimit, int upRate, int currUploadLimit) log "curr-data" line to the AutoSpeed-Beta file.private void
Log the limit status.private void
logNewLimits
(SMUpdate update) void
Ping source has failedvoid
pingSourceFound
(SpeedManagerPingSource source, boolean is_replacement) Called when a new source of ping times has been foundvoid
reset()
Reset any state to start of day valuesprivate void
setNewLimits
(SMUpdate update) Just update the limits.void
Called periodically (see period above) to allow stats to be updated.
-
Field Details
-
adapter
-
timeSinceLastUpdate
private long timeSinceLastUpdate -
consecutiveUpticks
private int consecutiveUpticks -
consecutiveDownticks
private int consecutiveDownticks -
limitMonitor
-
lastMetricValue
private float lastMetricValue -
numIntervalsBetweenCal
private static int numIntervalsBetweenCal -
skipIntervalAfterAdjustment
private static boolean skipIntervalAfterAdjustment -
pingTimeList
-
hadAdjustmentLastInterval
private boolean hadAdjustmentLastInterval -
intervalCount
private int intervalCount -
pingSourceManager
-
sessionMaxUploadRate
int sessionMaxUploadRate
-
-
Constructor Details
-
SpeedManagerAlgorithmProviderPingMap
SpeedManagerAlgorithmProviderPingMap(SpeedManagerAlgorithmProviderAdapter _adapter)
-
-
Method Details
-
destroy
public void destroy()- Specified by:
destroy
in interfaceSpeedManagerAlgorithmProvider
-
configurationSaved
public void configurationSaved()- Specified by:
configurationSaved
in interfaceCOConfigurationListener
-
reset
public void reset()Reset any state to start of day values- Specified by:
reset
in interfaceSpeedManagerAlgorithmProvider
-
updateStats
public void updateStats()Called periodically (see period above) to allow stats to be updated.- Specified by:
updateStats
in interfaceSpeedManagerAlgorithmProvider
-
logCurrentData
private void logCurrentData(int downRate, int currDownLimit, int upRate, int currUploadLimit) log "curr-data" line to the AutoSpeed-Beta file.- Parameters:
downRate
- -currDownLimit
- -upRate
- -currUploadLimit
- -
-
pingSourceFound
Called when a new source of ping times has been found- Specified by:
pingSourceFound
in interfaceSpeedManagerAlgorithmProvider
- Parameters:
source
- -is_replacement
- One of the initial sources or a replacement for a failed one
-
pingSourceFailed
Ping source has failed- Specified by:
pingSourceFailed
in interfaceSpeedManagerAlgorithmProvider
- Parameters:
source
- -
-
calculate
Called whenever a new set of ping values is available for processing- Specified by:
calculate
in interfaceSpeedManagerAlgorithmProvider
- Parameters:
sources
- -
-
endLimitTesting
private void endLimitTesting() -
logLimitStatus
private void logLimitStatus()Log the limit status. Max, Min and Conf. log("limits:down-max:down-min:down-conf:up-max:up-min:up-conf"); -
calculatePingMetric
private boolean calculatePingMetric()Variance PingMap data is the metrics used. Calculate it here.- Returns:
- - true if should exit early from the calculate method.
-
logNewLimits
-
setNewLimits
Just update the limits.- Parameters:
update
- - SMUpdate
-
determineSignalStrength
private float determineSignalStrength(float lastMetric) -
convertTestMetricToSignal
private float convertTestMetricToSignal(float testMetric) - Parameters:
testMetric
- - float -1.0f to +1.0f- Returns:
- signal as float with 0.0 meaning don't make an adjustment.
-
consectiveMultiplier
private float consectiveMultiplier()The longer were get the same signal the stronger it is. On upticks however we only increase the rates when if the upload or download is saturated.- Returns:
- -
-
calculateUpTickMultiple
private float calculateUpTickMultiple(int c) Want to rise much slower then drop.- Parameters:
c
- - number of upsignals received in a row- Returns:
- - multiple factor.
-
calculateDownTickMultiple
private float calculateDownTickMultiple(int c) Want to drop rate faster then increase.- Parameters:
c
- -- Returns:
- -
-
getIdlePingMillis
public int getIdlePingMillis()Various getters for interesting info shown in stats view- Specified by:
getIdlePingMillis
in interfaceSpeedManagerAlgorithmProvider
- Returns:
- -
-
getCurrentPingMillis
public int getCurrentPingMillis()- Specified by:
getCurrentPingMillis
in interfaceSpeedManagerAlgorithmProvider
-
getMaxPingMillis
public int getMaxPingMillis()- Specified by:
getMaxPingMillis
in interfaceSpeedManagerAlgorithmProvider
-
getCurrentChokeSpeed
public int getCurrentChokeSpeed()Returns the current view of when choking occurs- Specified by:
getCurrentChokeSpeed
in interfaceSpeedManagerAlgorithmProvider
- Returns:
- speed in bytes/sec
-
getMaxUploadSpeed
public int getMaxUploadSpeed()- Specified by:
getMaxUploadSpeed
in interfaceSpeedManagerAlgorithmProvider
-
getAdjustsDownloadLimits
public boolean getAdjustsDownloadLimits()Description copied from interface:SpeedManagerAlgorithmProvider
Indicates whether or not the provider is adjusting download as well as upload limits- Specified by:
getAdjustsDownloadLimits
in interfaceSpeedManagerAlgorithmProvider
- Returns:
-
log
-