diff --git a/apps/routerconsole/java/src/net/i2p/router/web/ProfileOrganizerRenderer.java b/apps/routerconsole/java/src/net/i2p/router/web/ProfileOrganizerRenderer.java
index 55939897a..5e7ef4b94 100644
--- a/apps/routerconsole/java/src/net/i2p/router/web/ProfileOrganizerRenderer.java
+++ b/apps/routerconsole/java/src/net/i2p/router/web/ProfileOrganizerRenderer.java
@@ -32,7 +32,7 @@ class ProfileOrganizerRenderer {
_organizer = organizer;
_comparator = new ProfileComparator();
}
- public void renderStatusHTML(Writer out) throws IOException {
+ public void renderStatusHTML(Writer out, boolean full) throws IOException {
Set peers = _organizer.selectAllPeers();
long now = _context.clock().now();
@@ -40,6 +40,8 @@ class ProfileOrganizerRenderer {
TreeSet order = new TreeSet(_comparator);
TreeSet integratedPeers = new TreeSet(_comparator);
+ int older = 0;
+ int standard = 0;
for (Iterator iter = peers.iterator(); iter.hasNext();) {
Hash peer = (Hash)iter.next();
if (_organizer.getUs().equals(peer)) continue;
@@ -51,7 +53,14 @@ class ProfileOrganizerRenderer {
if (info != null && info.getCapabilities().indexOf("f") >= 0)
integratedPeers.add(prof);
}
- if (prof.getLastSendSuccessful() <= hideBefore) continue;
+ if (prof.getLastSendSuccessful() <= hideBefore) {
+ older++;
+ continue;
+ }
+ if ((!full) && !_organizer.isHighCapacity(peer)) {
+ standard++;
+ continue;
+ }
order.add(prof);
}
@@ -62,7 +71,10 @@ class ProfileOrganizerRenderer {
StringBuilder buf = new StringBuilder(16*1024);
buf.append("
").append(_("Peer Profiles")).append("
\n");
buf.append(_("Showing {0} recent profiles.", order.size())).append('\n');
- buf.append(_("Hiding {0} older profiles.", peers.size()-order.size()));
+ if (older > 0)
+ buf.append(_("Hiding {0} older profiles.", older)).append('\n');
+ if (standard > 0)
+ buf.append("").append(_("Hiding {0} standard profiles.", standard)).append("\n");
buf.append("
");
buf.append("");
buf.append("");
@@ -169,7 +181,7 @@ class ProfileOrganizerRenderer {
}
buf.append("
");
- buf.append("").append(_("Floodfill and Integrated Peers")).append("
\n");
+ buf.append("").append(_("Floodfill and Integrated Peers")).append("
\n");
buf.append("");
buf.append("");
buf.append("").append(_("Peer")).append(" | ");
@@ -231,6 +243,7 @@ class ProfileOrganizerRenderer {
for (int i = 0; i < 6; i++)
buf.append("").append(_(NA));
}
+ buf.append(" |
\n");
}
buf.append("
");
@@ -324,12 +337,15 @@ class ProfileOrganizerRenderer {
private String davg (DBHistory dbh, long rate) {
RateStat rs = dbh.getFailedLookupRate();
if (rs == null)
- return _(NA);
+ return "0%";
Rate r = rs.getRate(rate);
if (r == null)
- return _(NA);
+ return "0%";
long c = r.getCurrentEventCount() + r.getLastEventCount();
- return "" + c;
+ if (c <= 0)
+ return "0%";
+ double avg = 0.5 + 100 * (r.getCurrentTotalValue() + r.getLastTotalValue()) / c;
+ return ((int) avg) + "%";
}
/** translate a string */
diff --git a/apps/routerconsole/java/src/net/i2p/router/web/ProfilesHelper.java b/apps/routerconsole/java/src/net/i2p/router/web/ProfilesHelper.java
index ba7a6aa92..3e68c3169 100644
--- a/apps/routerconsole/java/src/net/i2p/router/web/ProfilesHelper.java
+++ b/apps/routerconsole/java/src/net/i2p/router/web/ProfilesHelper.java
@@ -4,13 +4,19 @@ import java.io.IOException;
public class ProfilesHelper extends HelperBase {
+ private boolean _full;
+
public ProfilesHelper() {}
+ public void setFull(String f) {
+ _full = f != null;
+ }
+
/** @return empty string, writes directly to _out */
public String getProfileSummary() {
try {
ProfileOrganizerRenderer rend = new ProfileOrganizerRenderer(_context.profileOrganizer(), _context);
- rend.renderStatusHTML(_out);
+ rend.renderStatusHTML(_out, _full);
} catch (IOException ioe) {
ioe.printStackTrace();
}
diff --git a/apps/routerconsole/jsp/profiles.jsp b/apps/routerconsole/jsp/profiles.jsp
index 035f50b5b..69100e349 100644
--- a/apps/routerconsole/jsp/profiles.jsp
+++ b/apps/routerconsole/jsp/profiles.jsp
@@ -11,6 +11,7 @@
" />
+ " />
<%=intl._("Banned Peers")%>
diff --git a/router/java/src/net/i2p/router/peermanager/DBHistory.java b/router/java/src/net/i2p/router/peermanager/DBHistory.java
index 38d06a890..a8e084e49 100644
--- a/router/java/src/net/i2p/router/peermanager/DBHistory.java
+++ b/router/java/src/net/i2p/router/peermanager/DBHistory.java
@@ -114,6 +114,7 @@ public class DBHistory {
*/
public void lookupSuccessful() {
_successfulLookups++;
+ _failedLookupRate.addData(0, 0);
_lastLookupSuccessful = _context.clock().now();
}
@@ -132,6 +133,9 @@ public class DBHistory {
*
*/
public void storeSuccessful() {
+ // Fixme, redefined this to include both lookup and store fails,
+ // need to fix the javadocs
+ _failedLookupRate.addData(0, 0);
_lastStoreSuccessful = _context.clock().now();
}