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 Details

    • adapter

      private final SpeedManagerAlgorithmProviderAdapter adapter
    • timeSinceLastUpdate

      private long timeSinceLastUpdate
    • consecutiveUpticks

      private int consecutiveUpticks
    • consecutiveDownticks

      private int consecutiveDownticks
    • limitMonitor

      private final SpeedLimitMonitor limitMonitor
    • lastMetricValue

      private float lastMetricValue
    • numIntervalsBetweenCal

      private static int numIntervalsBetweenCal
    • skipIntervalAfterAdjustment

      private static boolean skipIntervalAfterAdjustment
    • pingTimeList

      private List pingTimeList
    • hadAdjustmentLastInterval

      private boolean hadAdjustmentLastInterval
    • intervalCount

      private int intervalCount
    • pingSourceManager

      final PingSourceManager pingSourceManager
    • sessionMaxUploadRate

      int sessionMaxUploadRate
  • Constructor Details

  • Method Details

    • destroy

      public void destroy()
      Specified by:
      destroy in interface SpeedManagerAlgorithmProvider
    • configurationSaved

      public void configurationSaved()
      Specified by:
      configurationSaved in interface COConfigurationListener
    • reset

      public void reset()
      Reset any state to start of day values
      Specified by:
      reset in interface SpeedManagerAlgorithmProvider
    • updateStats

      public void updateStats()
      Called periodically (see period above) to allow stats to be updated.
      Specified by:
      updateStats in interface SpeedManagerAlgorithmProvider
    • 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

      public void pingSourceFound(SpeedManagerPingSource source, boolean is_replacement)
      Called when a new source of ping times has been found
      Specified by:
      pingSourceFound in interface SpeedManagerAlgorithmProvider
      Parameters:
      source - -
      is_replacement - One of the initial sources or a replacement for a failed one
    • pingSourceFailed

      public void pingSourceFailed(SpeedManagerPingSource source)
      Ping source has failed
      Specified by:
      pingSourceFailed in interface SpeedManagerAlgorithmProvider
      Parameters:
      source - -
    • calculate

      public void calculate(SpeedManagerPingSource[] sources)
      Called whenever a new set of ping values is available for processing
      Specified by:
      calculate in interface SpeedManagerAlgorithmProvider
      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

      private void logNewLimits(SMUpdate update)
    • setNewLimits

      private void setNewLimits(SMUpdate update)
      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 interface SpeedManagerAlgorithmProvider
      Returns:
      -
    • getCurrentPingMillis

      public int getCurrentPingMillis()
      Specified by:
      getCurrentPingMillis in interface SpeedManagerAlgorithmProvider
    • getMaxPingMillis

      public int getMaxPingMillis()
      Specified by:
      getMaxPingMillis in interface SpeedManagerAlgorithmProvider
    • getCurrentChokeSpeed

      public int getCurrentChokeSpeed()
      Returns the current view of when choking occurs
      Specified by:
      getCurrentChokeSpeed in interface SpeedManagerAlgorithmProvider
      Returns:
      speed in bytes/sec
    • getMaxUploadSpeed

      public int getMaxUploadSpeed()
      Specified by:
      getMaxUploadSpeed in interface SpeedManagerAlgorithmProvider
    • 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 interface SpeedManagerAlgorithmProvider
      Returns:
    • log

      protected void log(String str)