forked from I2P_Developers/i2p.i2p
2005-12-09 zzz
* Create different strategies for exploratory tunnels (which are difficult
to create) and client tunnels (which are much easier)
* Gradually increase number of parallel build attempts as tunnel expiry
nears.
* Temporarily shorten attempted build tunnel length if builds using
configured tunnel length are unsuccessful
* React more aggressively to tunnel failure than routine tunnel
replacement
* Make tunnel creation times randomized - there is existing code to
randomize the tunnels but it isn't effective due to the tunnel creation
strategy. Currently, most tunnels get built all at once, at about 2 1/2
to 3 minutes before expiration. The patch fixes this by fixing the
randomization, and by changing the overlap time (with old tunnels) to a
range of 2 to 4 minutes.
* Reduce number of excess tunnels. Lots of excess tunnels get created due
to overlapping calls. Just about anything generated a call which could
build many tunnels all at once, even if tunnel building was already in
process.
* Miscellaneous router console enhancements
This commit is contained in:
@@ -83,14 +83,23 @@ public class SummaryHelper {
|
||||
|
||||
long ms = _context.clock().getOffset();
|
||||
|
||||
if (ms < 60 * 1000) {
|
||||
return now + " (" + (ms / 1000) + "s)";
|
||||
} else if (ms < 60 * 60 * 1000) {
|
||||
return now + " (" + (ms / (60 * 1000)) + "m)";
|
||||
} else if (ms < 24 * 60 * 60 * 1000) {
|
||||
return now + " (" + (ms / (60 * 60 * 1000)) + "h)";
|
||||
long diff = ms;
|
||||
if (diff < 0)
|
||||
diff = 0 - diff;
|
||||
if (diff == 0) {
|
||||
return now + " (no skew)";
|
||||
} else if (diff < 1000) {
|
||||
return now + " (" + ms + "ms skew)";
|
||||
} else if (diff < 5 * 1000) {
|
||||
return now + " (" + (ms / 1000) + "s skew)";
|
||||
} else if (diff < 60 * 1000) {
|
||||
return now + " <b>(" + (ms / 1000) + "s skew)</b>";
|
||||
} else if (diff < 60 * 60 * 1000) {
|
||||
return now + " <b>(" + (ms / (60 * 1000)) + "m skew)</b>";
|
||||
} else if (diff < 24 * 60 * 60 * 1000) {
|
||||
return now + " <b>(" + (ms / (60 * 60 * 1000)) + "h skew)</b>";
|
||||
} else {
|
||||
return now + " (" + (ms / (24 * 60 * 60 * 1000)) + "d)";
|
||||
return now + " <b>(" + (ms / (24 * 60 * 60 * 1000)) + "d skew)</b>";
|
||||
}
|
||||
}
|
||||
|
||||
@@ -408,6 +417,28 @@ public class SummaryHelper {
|
||||
return _context.tunnelManager().getOutboundTunnelCount();
|
||||
}
|
||||
|
||||
/**
|
||||
* How many inbound client tunnels we have.
|
||||
*
|
||||
*/
|
||||
public int getInboundClientTunnels() {
|
||||
if (_context == null)
|
||||
return 0;
|
||||
else
|
||||
return _context.tunnelManager().getInboundClientTunnelCount();
|
||||
}
|
||||
|
||||
/**
|
||||
* How many active outbound client tunnels we have.
|
||||
*
|
||||
*/
|
||||
public int getOutboundClientTunnels() {
|
||||
if (_context == null)
|
||||
return 0;
|
||||
else
|
||||
return _context.tunnelManager().getOutboundClientTunnelCount();
|
||||
}
|
||||
|
||||
/**
|
||||
* How many tunnels we are participating in.
|
||||
*
|
||||
@@ -459,4 +490,4 @@ public class SummaryHelper {
|
||||
public boolean updateAvailable() {
|
||||
return NewsFetcher.getInstance(_context).updateAvailable();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user