forked from I2P_Developers/i2p.i2p
* 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
47 lines
1.3 KiB
Java
47 lines
1.3 KiB
Java
package net.i2p.router.web;
|
|
|
|
import java.io.ByteArrayOutputStream;
|
|
import java.io.IOException;
|
|
import java.io.OutputStreamWriter;
|
|
import java.io.Writer;
|
|
|
|
import net.i2p.router.RouterContext;
|
|
|
|
public class JobQueueHelper {
|
|
private RouterContext _context;
|
|
private Writer _out;
|
|
/**
|
|
* Configure this bean to query a particular router context
|
|
*
|
|
* @param contextId begging few characters of the routerHash, or null to pick
|
|
* the first one we come across.
|
|
*/
|
|
public void setContextId(String contextId) {
|
|
try {
|
|
_context = ContextHelper.getContext(contextId);
|
|
} catch (Throwable t) {
|
|
t.printStackTrace();
|
|
}
|
|
}
|
|
|
|
public JobQueueHelper() {}
|
|
|
|
public void setWriter(Writer writer) { _out = writer; }
|
|
|
|
public String getJobQueueSummary() {
|
|
try {
|
|
if (_out != null) {
|
|
_context.jobQueue().renderStatusHTML(_out);
|
|
return "";
|
|
} else {
|
|
ByteArrayOutputStream baos = new ByteArrayOutputStream(32*1024);
|
|
_context.jobQueue().renderStatusHTML(new OutputStreamWriter(baos));
|
|
return new String(baos.toByteArray());
|
|
}
|
|
} catch (IOException ioe) {
|
|
ioe.printStackTrace();
|
|
return "";
|
|
}
|
|
}
|
|
}
|