Package net.i2p.stat

Class StatManager

java.lang.Object
net.i2p.stat.StatManager

public class StatManager extends Object
Coordinate the management of various frequencies and rates within I2P components, both allowing central update and retrieval, as well as distributed creation and use. This does not provide any persistence, but the data structures exposed can be read and updated to manage the complete state.
  • Field Details

  • Constructor Details

    • StatManager

      public StatManager(I2PAppContext context)
      The stat manager should only be constructed and accessed through the application context. This constructor should only be used by the appropriate application context itself.
  • Method Details

    • shutdown

      public void shutdown()
      Since:
      0.8.8
    • getStatLog

      public StatLog getStatLog()
      Gets the default stat log for RateStats Deprecated, unused
      Returns:
      null always
    • setStatLog

      @Deprecated public void setStatLog(StatLog log)
      Deprecated.
      unused
      Sets the default stat log for ALL known RateStats. Deprecated, unused
    • createFrequencyStat

      public void createFrequencyStat(String name, String description, String group, long[] periods)
      Create a new statistic to monitor the frequency of some event. The stat is ONLY created if the stat.full property is true or we are not in the router context.
      Parameters:
      name - unique name of the statistic
      description - simple description of the statistic
      group - used to group statistics together
      periods - array of period lengths (in milliseconds)
    • createRequiredFrequencyStat

      public void createRequiredFrequencyStat(String name, String description, String group, long[] periods)
      Create a new statistic to monitor the frequency of some event. The stat is always created, independent of the stat.full setting or context.
      Parameters:
      name - unique name of the statistic
      description - simple description of the statistic
      group - used to group statistics together
      periods - array of period lengths (in milliseconds)
      Since:
      0.8.7
    • createRateStat

      public void createRateStat(String name, String description, String group, long[] periods)
      Create a new statistic to monitor the average value and confidence of some action. The stat is ONLY created if the stat.full property is true or we are not in the router context.
      Parameters:
      name - unique name of the statistic
      description - simple description of the statistic
      group - used to group statistics together
      periods - array of period lengths (in milliseconds)
    • createRequiredRateStat

      public void createRequiredRateStat(String name, String description, String group, long[] periods)
      Create a new statistic to monitor the average value and confidence of some action. The stat is always created, independent of the stat.full setting or context.
      Parameters:
      name - unique name of the statistic
      description - simple description of the statistic
      group - used to group statistics together
      periods - array of period lengths (in milliseconds)
      Since:
      0.8.7
    • removeRateStat

      public void removeRateStat(String name)
    • updateFrequency

      public void updateFrequency(String name)
      update the given frequency statistic, taking note that an event occurred (and recalculating all frequencies)
    • addRateData

      public void addRateData(String name, long data, long eventDuration)
      update the given rate statistic, taking note that the given data point was received (and recalculating all rates)
    • addRateData

      public void addRateData(String name, long data)
      Update the given rate statistic, taking note that the given data point was received (and recalculating all rates). Zero duration.
      Since:
      0.8.10
    • coalesceStats

      public void coalesceStats()
    • getFrequency

      public FrequencyStat getFrequency(String name)
      Misnamed, as it returns a FrequencyStat, not a Frequency.
    • getRate

      public RateStat getRate(String name)
      Misnamed, as it returns a RateStat, not a Rate.
    • getFrequencyNames

      public Set<String> getFrequencyNames()
      Returns:
      a copy
    • getRateNames

      public Set<String> getRateNames()
      Returns:
      a copy
    • isRate

      public boolean isRate(String statName)
      is the given stat a monitored rate?
    • isFrequency

      public boolean isFrequency(String statName)
      is the given stat a monitored frequency?
    • getStatsByGroup

      public Map<String,SortedSet<String>> getStatsByGroup()
      Group name (untranslated String) to a SortedSet of untranslated stat names. Map is unsorted.
    • getStatFilter

      public String getStatFilter()
    • getStatFile

      public String getStatFile()
    • ignoreStat

      public boolean ignoreStat(String statName)
      Save memory by not creating stats unless they are required for router operation. For backward compatibility of any external clients, always returns false if not in router context.
      Parameters:
      statName - ignored
      Returns:
      true if the stat should be ignored.
    • store

      public void store(OutputStream out, String prefix) throws IOException
      Serializes all Frequencies and Rates to the provided OutputStream
      Parameters:
      out - to write to
      prefix - to use when serializing
      Throws:
      IOException - if something goes wrong
      Since:
      0.9.23