📄 cachestatus.java
字号:
package rabbit.meta;import java.text.DateFormat;import java.text.SimpleDateFormat;import java.util.Date;import rabbit.cache.Cache;import rabbit.cache.CacheEntry;import rabbit.http.HttpHeader;import rabbit.proxy.HtmlPage;/** A cache inspector. * * @author <a href="mailto:robo@khelekore.org">Robert Olofsson</a> */public class CacheStatus extends BaseMetaHandler { private static final int NUMBER_OF_ENTRIES = 256; protected String getPageHeader () { return "Cache status"; } protected PageCompletion addPageInformation (StringBuilder sb) { addStatus (sb); return PageCompletion.PAGE_DONE; } private void addStatus (StringBuilder sb) { Cache<HttpHeader, HttpHeader> cache = con.getProxy ().getCache (); long cursizemb = cache.getCurrentSize (); cursizemb /= (1024 * 1024); long maxsizemb = cache.getMaxSize (); maxsizemb /= (1024 * 1024); long cachetimeh = cache.getCacheTime (); cachetimeh /= (1000 * 60 * 60); sb.append ("Cachedir: ").append (cache.getCacheDir ()); sb.append (".<br>\n#Cached files: "); sb.append (cache.getNumberOfEntries ()); sb.append (".<br>\ncurrent Size: ").append (cursizemb); sb.append (" MB.<br>\nMax Size: ").append (maxsizemb); sb.append (" MB.<br>\nCachetime: ").append (cachetimeh); sb.append (" hours.<br>\n"); sb.append ("<br>Partial listing of contents in cache, " + "select entryset:<br>\n"); addPartSelection (sb, cache); addEntries (sb, cache); } private void addPartSelection (StringBuilder sb, Cache<HttpHeader, HttpHeader> cache) { long entries = cache.getNumberOfEntries (); long lim = (long)Math.ceil (entries / (double)NUMBER_OF_ENTRIES); for (long i = 0; i < lim; i++) { if (i > 0) sb.append (", "); long j = i * NUMBER_OF_ENTRIES; long k = Math.min (j + NUMBER_OF_ENTRIES, entries); sb.append ("<a href=\"CacheStatus?start=").append (j); sb.append ("\">").append (j).append ("-").append (k); sb.append ("</a>"); } } private void addEntries (StringBuilder sb, Cache<HttpHeader, HttpHeader> cache) { sb.append (HtmlPage.getTableHeader (100, 1)); sb.append (HtmlPage.getTableTopicRow ()); sb.append ("<th>URL</th><th>filename</th><th>size</th>" + "<th>expires</th></tr>\n"); String s = htab.getProperty ("start"); int start = 0; if (s != null) { try { start = Integer.parseInt (s); } catch (NumberFormatException ex) { ex.printStackTrace (); } } long totalsize = 0; int count = 0; DateFormat sdf = new SimpleDateFormat ("yyyyMMdd-HH:mm"); Date d = new Date (); for (CacheEntry<HttpHeader, HttpHeader> lister : cache.getEntries ()) { if (--start >= 0) continue; HttpHeader lheader = lister.getKey (); if (lheader == null) continue; // reading the data hook will cause lots of file reading... //HTTPHeader webheader = (HTTPHeader)lister.getDataHook (cache); String filev = lheader.getRequestURI (); if (filev.length () > 60) filev = filev.substring (0,57) + "..."; d.setTime (lister.getExpires ()); sb.append ("<tr><td><a href = \""); sb.append (lheader.getRequestURI ()); sb.append ("\" target = cacheview>"); sb.append (filev).append ("</a></td>"); sb.append ("<td>").append (cache.getEntryName (lister)); sb.append ("</td><td align=\"right\">"); sb.append (lister.getSize ()); sb.append ("</td><td>").append (sdf.format (d)); sb.append ("</td></tr>\n"); totalsize += lister.getSize (); count++; } sb.append ("<tr><td><B>Total:</b></td><td> " + "</td><td align=\"right\">"); sb.append (totalsize); sb.append ("</td><td> </td></tr>\n</table>\n"); }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -