forked from I2P_Developers/i2p.i2p
2006-03-16 jrandom
* Integrate basic hooks for jrobin (http://jrobin.org) into the router console. Selected stats can be harvested automatically and fed into in-memory RRD databases, and those databases can be served up either as PNG images or as RRDtool compatible XML dumps (see oldstats.jsp for details). A base set of stats are harvested by default, but an alternate list can be specified by setting the 'stat.summaries' list on the advanced config. For instance: stat.summaries=bw.recvRate.60000,bw.sendRate.60000 * HTML tweaking for the general config page (thanks void!) * Odd NPE fix (thanks Complication!)
This commit is contained in:
@@ -26,6 +26,8 @@ public class Rate {
|
||||
private volatile double _lifetimeTotalValue;
|
||||
private volatile long _lifetimeEventCount;
|
||||
private volatile long _lifetimeTotalEventTime;
|
||||
private RateSummaryListener _summaryListener;
|
||||
private RateStat _stat;
|
||||
|
||||
private volatile long _lastCoalesceDate;
|
||||
private long _creationDate;
|
||||
@@ -108,6 +110,9 @@ public class Rate {
|
||||
public long getPeriod() {
|
||||
return _period;
|
||||
}
|
||||
|
||||
public RateStat getRateStat() { return _stat; }
|
||||
public void setRateStat(RateStat rs) { _stat = rs; }
|
||||
|
||||
/**
|
||||
*
|
||||
@@ -203,8 +208,13 @@ public class Rate {
|
||||
_currentEventCount = 0;
|
||||
_currentTotalEventTime = 0;
|
||||
}
|
||||
if (_summaryListener != null)
|
||||
_summaryListener.add(_lastTotalValue, _lastEventCount, _lastTotalEventTime, _period);
|
||||
}
|
||||
|
||||
public void setSummaryListener(RateSummaryListener listener) { _summaryListener = listener; }
|
||||
public RateSummaryListener getSummaryListener() { return _summaryListener; }
|
||||
|
||||
/** what was the average value across the events in the last period? */
|
||||
public double getAverageValue() {
|
||||
if ((_lastTotalValue != 0) && (_lastEventCount > 0))
|
||||
|
||||
@@ -27,8 +27,10 @@ public class RateStat {
|
||||
_description = description;
|
||||
_groupName = group;
|
||||
_rates = new Rate[periods.length];
|
||||
for (int i = 0; i < periods.length; i++)
|
||||
for (int i = 0; i < periods.length; i++) {
|
||||
_rates[i] = new Rate(periods[i]);
|
||||
_rates[i].setRateStat(this);
|
||||
}
|
||||
}
|
||||
public void setStatLog(StatLog sl) { _statLog = sl; }
|
||||
|
||||
@@ -159,6 +161,7 @@ public class RateStat {
|
||||
_rates[i].load(props, curPrefix, treatAsCurrent);
|
||||
} catch (IllegalArgumentException iae) {
|
||||
_rates[i] = new Rate(period);
|
||||
_rates[i].setRateStat(this);
|
||||
if (_log.shouldLog(Log.WARN))
|
||||
_log.warn("Rate for " + prefix + " is corrupt, reinitializing that period");
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user