return Integer.toString((int) p)+"%";
}
public Reply get(Request request) {
Reply r = createDefaultReply(request, HTTP.OK);
HtmlGenerator g = new HtmlGenerator("Proxy statistics");
int c = proxy.reqcount+proxy.reqerred;
if ( c == 0 )
c = 1;
g.addMeta("Refresh", "30");
proxy.addStyleSheet(g);
g.append("<h1>Proxy statistics</h1>");
g.append("<p>The proxy was last started at: <em>"
+ startdate
+ "</em>");
g.append("<p><table align=\"center\" border=\"1\"");
g.append("<tr><th colspan=\"3\">Counter<th>count<th>percentage");
// The total number of hits to the proxy:
g.append("<tr><td colspan=\"3\">Total number of handled requests");
g.append("<td align=center>", Integer.toString(c));
g.append("<td align=center>", percentage(c, c));
// The total number of errors:
g.append("<tr><td width=50><td colspan=\"2\">Erred requests");
g.append("<td align=center>", Integer.toString(proxy.reqerred));
g.append("<td align=center>", percentage(proxy.reqerred, c));
// The total number of ICP redirects:
g.append("<tr><td width=50><td colspan=\"2\">ICP redirects");
g.append("<td align=center>", Integer.toString(proxy.cache_icps));
g.append("<td align=center>", percentage(proxy.cache_icps, c));
// The total number of no-cache:
g.append("<tr><td width=50><td colspan=\"2\">Non cacheable");
g.append("<td align=center>", Integer.toString(proxy.cache_nocache));
g.append("<td align=center>", percentage(proxy.cache_nocache, c));
// Cache accesses:
int cached = (proxy.cache_hits +
proxy.cache_misses +
proxy.cache_revalidations +
proxy.cache_retrievals);
g.append("<tr><td width=50><td colspan=\"2\">Cache Accesses");
g.append("<td align=center>", Integer.toString(cached));
g.append("<td align=center>", percentage(cached, c));
// Hits (served by cache)
g.append("<tr><td width=50><td width=50><td>Hits (served by cache)");
g.append("<td align=center>", Integer.toString(proxy.cache_hits));
g.append("<td align=center>", percentage(proxy.cache_hits, c));
// Hits (revalidations)
g.append("<tr><td width=50><td width=50><td>Hits (revalidations)");
g.append("<td align=center>"
, Integer.toString(proxy.cache_revalidations));
g.append("<td align=center>"
, percentage(proxy.cache_revalidations, c));
// Misses (no cache entry)
g.append("<tr><td width=50><td width=50><td>Misses (no entry)");
g.append("<td align=center>", Integer.toString(proxy.cache_misses));
g.append("<td align=center>", percentage(proxy.cache_misses, c));
// Misses (retrievals)
g.append("<tr><td width=50><td width=50><td>Misses (retrievals)");
g.append("<td align=center>",Integer.toString(proxy.cache_retrievals));
g.append("<td align=center>", percentage(proxy.cache_retrievals, c));
g.append("</table>");
// Some goodies:
g.append("<hr>Generated by <i>"
, proxy.getServer().getURL().toExternalForm());
r.setStream(g);
r.addPragma("no-cache");
r.setNoCache();
return r;