* PRNG: Add two stats

* Summary bar:
      - Display Warning for TCP private IP address
      - Display PRNG stats
This commit is contained in:
zzz
2008-06-20 20:22:38 +00:00
parent 53c5b1446a
commit 49e429c166
7 changed files with 52 additions and 6 deletions

View File

@ -10,6 +10,7 @@ import java.util.Set;
import net.i2p.data.DataHelper;
import net.i2p.data.Destination;
import net.i2p.data.LeaseSet;
import net.i2p.data.RouterAddress;
import net.i2p.stat.Rate;
import net.i2p.stat.RateStat;
import net.i2p.router.CommSystemFacade;
@ -17,6 +18,7 @@ import net.i2p.router.Router;
import net.i2p.router.RouterContext;
import net.i2p.router.RouterVersion;
import net.i2p.router.TunnelPoolSettings;
import net.i2p.router.transport.ntcp.NTCPAddress;
/**
* Simple helper to query the appropriate router for data necessary to render
@ -120,7 +122,10 @@ public class SummaryHelper {
int status = _context.commSystem().getReachabilityStatus();
switch (status) {
case CommSystemFacade.STATUS_OK:
return "OK";
RouterAddress ra = _context.router().getRouterInfo().getTargetAddress("NTCP");
if (ra == null || (new NTCPAddress(ra)).isPubliclyRoutable())
return "OK";
return "ERR-Private TCP Address";
case CommSystemFacade.STATUS_DIFFERENT:
return "ERR-SymmetricNAT";
case CommSystemFacade.STATUS_REJECT_UNSOLICITED:
@ -514,6 +519,28 @@ public class SummaryHelper {
return String.valueOf(_context.tunnelManager().getInboundBuildQueueSize());
}
public String getPRNGStatus() {
Rate r = _context.statManager().getRate("prng.bufferWaitTime").getRate(60*1000);
int use = (int) r.getLastEventCount();
int i = (int) (r.getAverageValue() + 0.5);
if (i <= 0) {
r = _context.statManager().getRate("prng.bufferWaitTime").getRate(10*60*1000);
i = (int) (r.getAverageValue() + 0.5);
}
String rv = i + "/";
r = _context.statManager().getRate("prng.bufferFillTime").getRate(60*1000);
i = (int) (r.getAverageValue() + 0.5);
if (i <= 0) {
r = _context.statManager().getRate("prng.bufferFillTime").getRate(10*60*1000);
i = (int) (r.getAverageValue() + 0.5);
}
rv = rv + i + "ms";
// margin == fill time / use time
if (use > 0 && i > 0)
rv = rv + ' ' + (60*1000 / (use * i)) + 'x';
return rv;
}
public boolean updateAvailable() {
return NewsFetcher.getInstance(_context).updateAvailable();
}