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 Summary
Fields Modifier and Type Field Description static String
DEFAULT_STAT_FILE
static String
PROP_STAT_FILE
static String
PROP_STAT_FILTER
Comma-separated stats or * for all.static String
PROP_STAT_FULL
default false -
Constructor Summary
Constructors Constructor Description StatManager(I2PAppContext context)
The stat manager should only be constructed and accessed through the application context. -
Method Summary
Modifier and Type Method Description void
addRateData(String name, long data)
Update the given rate statistic, taking note that the given data point was received (and recalculating all rates).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)void
coalesceStats()
void
createFrequencyStat(String name, String description, String group, long[] periods)
Create a new statistic to monitor the frequency of some event.void
createRateStat(String name, String description, String group, long[] periods)
Create a new statistic to monitor the average value and confidence of some action.void
createRequiredFrequencyStat(String name, String description, String group, long[] periods)
Create a new statistic to monitor the frequency of some event.void
createRequiredRateStat(String name, String description, String group, long[] periods)
Create a new statistic to monitor the average value and confidence of some action.FrequencyStat
getFrequency(String name)
Misnamed, as it returns a FrequencyStat, not a Frequency.Set<String>
getFrequencyNames()
RateStat
getRate(String name)
Misnamed, as it returns a RateStat, not a Rate.Set<String>
getRateNames()
String
getStatFile()
String
getStatFilter()
StatLog
getStatLog()
Gets the default stat log for RateStats Deprecated, unusedMap<String,SortedSet<String>>
getStatsByGroup()
Group name (untranslated String) to a SortedSet of untranslated stat names.boolean
ignoreStat(String statName)
Save memory by not creating stats unless they are required for router operation.boolean
isFrequency(String statName)
is the given stat a monitored frequency?boolean
isRate(String statName)
is the given stat a monitored rate?void
removeRateStat(String name)
void
setStatLog(StatLog log)
Deprecated.unusedvoid
shutdown()
void
store(OutputStream out, String prefix)
Serializes all Frequencies and Rates to the provided OutputStreamvoid
updateFrequency(String name)
update the given frequency statistic, taking note that an event occurred (and recalculating all frequencies)
-
Field Details
-
PROP_STAT_FILTER
Comma-separated stats or * for all. This property must be set at startup, or logging is disabled.- See Also:
- Constant Field Values
-
PROP_STAT_FILE
- See Also:
- Constant Field Values
-
DEFAULT_STAT_FILE
- See Also:
- Constant Field Values
-
PROP_STAT_FULL
default false- See Also:
- Constant Field Values
-
-
Constructor Details
-
StatManager
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
Gets the default stat log for RateStats Deprecated, unused- Returns:
- null always
-
setStatLog
Deprecated.unusedSets the default stat log for ALL known RateStats. Deprecated, unused -
createFrequencyStat
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 statisticdescription
- simple description of the statisticgroup
- used to group statistics togetherperiods
- 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 statisticdescription
- simple description of the statisticgroup
- used to group statistics togetherperiods
- array of period lengths (in milliseconds)- Since:
- 0.8.7
-
createRateStat
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 statisticdescription
- simple description of the statisticgroup
- used to group statistics togetherperiods
- array of period lengths (in milliseconds)
-
createRequiredRateStat
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 statisticdescription
- simple description of the statisticgroup
- used to group statistics togetherperiods
- array of period lengths (in milliseconds)- Since:
- 0.8.7
-
removeRateStat
-
updateFrequency
update the given frequency statistic, taking note that an event occurred (and recalculating all frequencies) -
addRateData
update the given rate statistic, taking note that the given data point was received (and recalculating all rates) -
addRateData
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
Misnamed, as it returns a FrequencyStat, not a Frequency. -
getRate
Misnamed, as it returns a RateStat, not a Rate. -
getFrequencyNames
- Returns:
- a copy
-
getRateNames
- Returns:
- a copy
-
isRate
is the given stat a monitored rate? -
isFrequency
is the given stat a monitored frequency? -
getStatsByGroup
Group name (untranslated String) to a SortedSet of untranslated stat names. Map is unsorted. -
getStatFilter
-
getStatFile
-
ignoreStat
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
Serializes all Frequencies and Rates to the provided OutputStream- Parameters:
out
- to write toprefix
- to use when serializing- Throws:
IOException
- if something goes wrong- Since:
- 0.9.23
-