Package net.i2p.stat

Class 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.
    • Constructor Detail

      • 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 Detail

      • 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