forked from I2P_Developers/i2p.i2p
* Sync fixes to Frequency
* Removal of warnings related to generics in StatManager
This commit is contained in:
@@ -35,7 +35,7 @@ public class Frequency {
|
||||
* when did the last event occur?
|
||||
* @deprecated unused
|
||||
*/
|
||||
public long getLastEvent() {
|
||||
public synchronized long getLastEvent() {
|
||||
return _lastEvent;
|
||||
}
|
||||
|
||||
@@ -44,7 +44,7 @@ public class Frequency {
|
||||
* as calculated during the last event occurrence?
|
||||
* @return milliseconds; returns period + 1 if no events in previous period
|
||||
*/
|
||||
public double getAverageInterval() {
|
||||
public synchronized double getAverageInterval() {
|
||||
return _avgInterval;
|
||||
}
|
||||
|
||||
@@ -53,7 +53,7 @@ public class Frequency {
|
||||
* @return milliseconds; returns period + 1 if no events in previous period
|
||||
* @deprecated unused
|
||||
*/
|
||||
public double getMinAverageInterval() {
|
||||
public synchronized double getMinAverageInterval() {
|
||||
return _minAverageInterval;
|
||||
}
|
||||
|
||||
@@ -61,45 +61,41 @@ public class Frequency {
|
||||
* Calculate how many events would occur in a period given the current (rolling) average.
|
||||
* Use getStrictAverageInterval() for the real lifetime average.
|
||||
*/
|
||||
public double getAverageEventsPerPeriod() {
|
||||
synchronized (this) {
|
||||
if (_avgInterval > 0) return _period / _avgInterval;
|
||||
|
||||
return 0;
|
||||
}
|
||||
public synchronized double getAverageEventsPerPeriod() {
|
||||
if (_avgInterval > 0) return _period / _avgInterval;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* Calculate how many events would occur in a period given the maximum rolling average.
|
||||
* Use getStrictAverageEventsPerPeriod() for the real lifetime average.
|
||||
*/
|
||||
public double getMaxAverageEventsPerPeriod() {
|
||||
synchronized (this) {
|
||||
if (_minAverageInterval > 0 && _minAverageInterval <= _period) return _period / _minAverageInterval;
|
||||
public synchronized double getMaxAverageEventsPerPeriod() {
|
||||
if (_minAverageInterval > 0 && _minAverageInterval <= _period) return _period / _minAverageInterval;
|
||||
|
||||
return 0;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* Over the lifetime of this stat, without any decay or weighting, what was the average interval between events? (ms)
|
||||
* @return milliseconds; returns Double.MAX_VALUE if no events ever
|
||||
*/
|
||||
public double getStrictAverageInterval() {
|
||||
public synchronized double getStrictAverageInterval() {
|
||||
long duration = now() - _start;
|
||||
if ((duration <= 0) || (_count <= 0)) return Double.MAX_VALUE;
|
||||
return duration / (double) _count;
|
||||
}
|
||||
|
||||
/** using the strict average interval, how many events occur within an average period? */
|
||||
public double getStrictAverageEventsPerPeriod() {
|
||||
public synchronized double getStrictAverageEventsPerPeriod() {
|
||||
double avgInterval = getStrictAverageInterval();
|
||||
if (avgInterval > 0) return _period / avgInterval;
|
||||
return 0;
|
||||
}
|
||||
|
||||
/** how many events have occurred within the lifetime of this stat? */
|
||||
public long getEventCount() {
|
||||
public synchronized long getEventCount() {
|
||||
return _count;
|
||||
}
|
||||
|
||||
|
||||
@@ -10,7 +10,6 @@ import java.util.TreeSet;
|
||||
import java.util.concurrent.ConcurrentHashMap;
|
||||
|
||||
import net.i2p.I2PAppContext;
|
||||
import net.i2p.util.Log;
|
||||
|
||||
/**
|
||||
* Coordinate the management of various frequencies and rates within I2P components,
|
||||
@@ -20,7 +19,6 @@ import net.i2p.util.Log;
|
||||
*
|
||||
*/
|
||||
public class StatManager {
|
||||
private final Log _log;
|
||||
private final I2PAppContext _context;
|
||||
|
||||
/** stat name to FrequencyStat */
|
||||
@@ -47,11 +45,10 @@ public class StatManager {
|
||||
* appropriate application context itself.
|
||||
*
|
||||
*/
|
||||
public StatManager(I2PAppContext context) {
|
||||
_log = context.logManager().getLog(StatManager.class);
|
||||
public StatManager(I2PAppContext context) {
|
||||
_context = context;
|
||||
_frequencyStats = new ConcurrentHashMap(8);
|
||||
_rateStats = new ConcurrentHashMap(128);
|
||||
_frequencyStats = new ConcurrentHashMap<String,FrequencyStat>(8);
|
||||
_rateStats = new ConcurrentHashMap<String,RateStat>(128);
|
||||
if (getStatFilter() != null)
|
||||
_statLog = new BufferedStatLog(context);
|
||||
}
|
||||
@@ -194,11 +191,11 @@ public class StatManager {
|
||||
}
|
||||
|
||||
public Set<String> getFrequencyNames() {
|
||||
return new HashSet(_frequencyStats.keySet());
|
||||
return new HashSet<String>(_frequencyStats.keySet());
|
||||
}
|
||||
|
||||
public Set<String> getRateNames() {
|
||||
return new HashSet(_rateStats.keySet());
|
||||
return new HashSet<String>(_rateStats.keySet());
|
||||
}
|
||||
|
||||
/** is the given stat a monitored rate? */
|
||||
@@ -216,12 +213,12 @@ public class StatManager {
|
||||
* Map is unsorted.
|
||||
*/
|
||||
public Map<String, SortedSet<String>> getStatsByGroup() {
|
||||
Map<String, SortedSet<String>> groups = new HashMap(32);
|
||||
Map<String, SortedSet<String>> groups = new HashMap<String, SortedSet<String>>(32);
|
||||
for (FrequencyStat stat : _frequencyStats.values()) {
|
||||
String gname = stat.getGroupName();
|
||||
SortedSet<String> names = groups.get(gname);
|
||||
if (names == null) {
|
||||
names = new TreeSet();
|
||||
names = new TreeSet<String>();
|
||||
groups.put(gname, names);
|
||||
}
|
||||
names.add(stat.getName());
|
||||
@@ -230,7 +227,7 @@ public class StatManager {
|
||||
String gname = stat.getGroupName();
|
||||
SortedSet<String> names = groups.get(gname);
|
||||
if (names == null) {
|
||||
names = new TreeSet();
|
||||
names = new TreeSet<String>();
|
||||
groups.put(gname, names);
|
||||
}
|
||||
names.add(stat.getName());
|
||||
|
||||
Reference in New Issue
Block a user