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
All Methods Instance Methods Concrete Methods Deprecated Methods 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 Detail
-
PROP_STAT_FILTER
public static final String 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
public static final String PROP_STAT_FILE
- See Also:
- Constant Field Values
-
DEFAULT_STAT_FILE
public static final String DEFAULT_STAT_FILE
- See Also:
- Constant Field Values
-
PROP_STAT_FULL
public static final String PROP_STAT_FULL
default false- See Also:
- Constant Field Values
-
-
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.unusedSets 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 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
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 statisticdescription
- simple description of the statisticgroup
- used to group statistics togetherperiods
- 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 statisticdescription
- simple description of the statisticgroup
- used to group statistics togetherperiods
- 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.
-
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 toprefix
- to use when serializing- Throws:
IOException
- if something goes wrong- Since:
- 0.9.23
-
-