⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 cachestatus.java

📁 一款Java实现的HTTP代理服务器
💻 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>&nbsp;" + 		   "</td><td align=\"right\">");	sb.append (totalsize);	sb.append ("</td><td>&nbsp;</td></tr>\n</table>\n");    }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -