Class PingSourceManager
java.lang.Object
com.biglybt.core.speedmanager.impl.v2.PingSourceManager
This class manage cycling though the PingSources. It keep track of PingSource stats and
applies rules on if/when to cycle though a ping-source.
#1) If the slowest ping-source is 10x the the best for a 1 min average. kick it.
#2) If a ping-source is slower then two combined sources (2x) for a 5 min average. then kick it.
#3) Every 30 minutes kick the slowest ping source and request a new one. Just to keep things fresh.
Also maintain logic do determine if a new source is better then the previous one. (To determine
if these rules lead to good data.)
-
Field Summary
FieldsModifier and TypeFieldDescriptionprivate long
private final Map
private static final long
private static final long
private static final long
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionvoid
addPingTime
(SpeedManagerPingSource source) private boolean
checkForBadPing
(SpeedManagerPingSource[] sources) If the slowest ping in 10x the fastest then remove it.private boolean
checkForSlowSource
(SpeedManagerPingSource[] sources) A slow source is something that is 2x the slower then the two fastest.void
checkPingSources
(SpeedManagerPingSource[] sources) Determine if we should drop any ping sources.private boolean
forcePingSourceChange
(SpeedManagerPingSource[] sources) If one ping source is twice the fastest then replace it.void
void
pingSourceFound
(SpeedManagerPingSource source, boolean is_replacement) private void
After a ping-source has been removed, need to resetTimer the timer.
-
Field Details
-
pingAverages
-
lastPingRemoval
private long lastPingRemoval -
TIME_BETWEEN_BAD_PING_REMOVALS
private static final long TIME_BETWEEN_BAD_PING_REMOVALS- See Also:
-
TIME_BETWEEN_SLOW_PING_REMOVALS
private static final long TIME_BETWEEN_SLOW_PING_REMOVALS- See Also:
-
TIME_BETWEEN_FORCED_CYCLE_REMOVALS
private static final long TIME_BETWEEN_FORCED_CYCLE_REMOVALS- See Also:
-
-
Constructor Details
-
PingSourceManager
public PingSourceManager()
-
-
Method Details
-
checkPingSources
Determine if we should drop any ping sources. Sort them, if one significantly higher then the other two. then drop it.- Parameters:
sources
- - SpeedManagerPingSource[] inputs
-
forcePingSourceChange
If one ping source is twice the fastest then replace it. Otherwise reset the timer.- Parameters:
sources
- -- Returns:
- - true is a source has been changed.
-
checkForSlowSource
A slow source is something that is 2x the slower then the two fastest.- Parameters:
sources
- -- Returns:
- - true is a source has been removed.
-
checkForBadPing
If the slowest ping in 10x the fastest then remove it.- Parameters:
sources
- -- Returns:
- - true is a source has been removed.
-
pingSourceFound
-
pingSourceFailed
-
addPingTime
-
resetTimer
private void resetTimer()After a ping-source has been removed, need to resetTimer the timer.
-