diff --git a/apps/routerconsole/java/src/net/i2p/router/web/helpers/TunnelRenderer.java b/apps/routerconsole/java/src/net/i2p/router/web/helpers/TunnelRenderer.java
index 708f66ad9..c3c37eb31 100644
--- a/apps/routerconsole/java/src/net/i2p/router/web/helpers/TunnelRenderer.java
+++ b/apps/routerconsole/java/src/net/i2p/router/web/helpers/TunnelRenderer.java
@@ -132,48 +132,7 @@ class TunnelRenderer {
processed += cfg.getRecentMessagesCount();
if (++displayed > DISPLAY_LIMIT)
continue;
- out.write("
");
- long recv = cfg.getReceiveTunnelId();
- if (recv != 0)
- out.write("| " +
- recv + " | ");
- else
- out.write("n/a | ");
- Hash from = cfg.getReceiveFrom();
- if (from != null)
- out.write("" + netDbLink(from) +" | ");
- else
- out.write(" | ");
- long send = cfg.getSendTunnelId();
- if (send != 0)
- out.write("" + send +" | ");
- else
- out.write(" | ");
- Hash to = cfg.getSendTo();
- if (to != null)
- out.write("" + netDbLink(to) +" | ");
- else
- out.write(" | ");
- long timeLeft = cfg.getExpiration() - now;
- if (timeLeft > 0)
- out.write("" + DataHelper.formatDuration2(timeLeft) + " | ");
- else
- out.write("(" + _t("grace period") + ") | ");
- out.write("" + DataHelper.formatSize2(count * 1024) + "B | ");
- int lifetime = (int) ((now - cfg.getCreation()) / 1000);
- if (lifetime <= 0)
- lifetime = 1;
- if (lifetime > 10*60)
- lifetime = 10*60;
- long bps = 1024L * count / lifetime;
- out.write("" + DataHelper.formatSize2Decimal(bps) + "Bps | ");
- if (to == null)
- out.write("" + _t("Outbound Endpoint") + " | ");
- else if (from == null)
- out.write("" + _t("Inbound Gateway") + " | ");
- else
- out.write("" + _t("Participant") + " | ");
- out.write("
\n");
+ renderTunnel(out, now, count, cfg);
}
if (!participating.isEmpty())
out.write("\n");
@@ -213,7 +172,7 @@ class TunnelRenderer {
List sort = counts.sortedObjects();
for (Hash h : sort) {
int count = counts.count(h);
- if (count <= 1)
+ if (count < 4)
break;
if (++displayed > DISPLAY_LIMIT)
break;
@@ -222,6 +181,7 @@ class TunnelRenderer {
out.write("" + DataHelper.formatSize2(bws.count(h) * 1024) + "B | \n");
}
out.write("\n");
+
if (displayed <= 0)
out.write("" + _t("none") + "
\n");
}
@@ -251,6 +211,55 @@ class TunnelRenderer {
}
+ /**
+ * Output one table row for one tunnel
+ * @since 0.9.69 split out from above
+ */
+ private void renderTunnel(Writer out, long now, int count, HopConfig cfg) throws IOException {
+ out.write("");
+ long recv = cfg.getReceiveTunnelId();
+ if (recv != 0)
+ out.write("| " +
+ recv + " | ");
+ else
+ out.write("n/a | ");
+ Hash from = cfg.getReceiveFrom();
+ if (from != null)
+ out.write("" + netDbLink(from) +" | ");
+ else
+ out.write(" | ");
+ long send = cfg.getSendTunnelId();
+ if (send != 0)
+ out.write("" + send +" | ");
+ else
+ out.write(" | ");
+ Hash to = cfg.getSendTo();
+ if (to != null)
+ out.write("" + netDbLink(to) +" | ");
+ else
+ out.write(" | ");
+ long timeLeft = cfg.getExpiration() - now;
+ if (timeLeft > 0)
+ out.write("" + DataHelper.formatDuration2(timeLeft) + " | ");
+ else
+ out.write("(" + _t("grace period") + ") | ");
+ out.write("" + DataHelper.formatSize2(count * 1024) + "B | ");
+ int lifetime = (int) ((now - cfg.getCreation()) / 1000);
+ if (lifetime <= 0)
+ lifetime = 1;
+ if (lifetime > 10*60)
+ lifetime = 10*60;
+ long bps = 1024L * count / lifetime;
+ out.write("" + DataHelper.formatSize2Decimal(bps) + "Bps | ");
+ if (to == null)
+ out.write("" + _t("Outbound Endpoint") + " | ");
+ else if (from == null)
+ out.write("" + _t("Inbound Gateway") + " | ");
+ else
+ out.write("" + _t("Participant") + " | ");
+ out.write("
\n");
+ }
+
/** @since 0.9.33 */
static String range(int f, int t) {
return Math.round(f * 1.024f) + " - " + (Math.round(t * 1.024f) - 1) + " KBps";