pushcachemanager.java
来自「很棒的web服务器源代码」· Java 代码 · 共 177 行
JAVA
177 行
// PushCacheManager.java// $Id: PushCacheManager.java,v 1.1 2001/10/03 15:00:46 ylafon Exp $// (c) COPYRIGHT MIT, INRIA and Keio, 2001.// Please first read the full copyright statement in file COPYRIGHT.htmlpackage org.w3c.www.protocol.http.cache.push;import org.w3c.util.ArrayDictionary;import org.w3c.www.protocol.http.Request;import org.w3c.www.protocol.http.HttpManager;import org.w3c.www.protocol.http.cache.CachedResource;import org.w3c.www.protocol.http.cache.CacheGeneration;import java.net.URL;import java.util.Enumeration;/** * Singleton class to manage push cache. * @see PushCacheHandler * * @author Paul Henshaw, The Fantastic Corporation, Paul.Henshaw@fantastic.com * @version $Revision: 1.1 $ * $Id: PushCacheManager.java,v 1.1 2001/10/03 15:00:46 ylafon Exp $ */public class PushCacheManager { /** * Additional header field and value to identify push resources */ public static final String HEADER_FIELD="tfc_from_push_stream"; public static final String HEADER_VALUE="yes"; private static PushCacheManager _instance=null; private PushCacheFilter _filter=null; /** * Access to manager */ public static PushCacheManager instance() { if(_instance==null) { _instance=new PushCacheManager(); } return(_instance); } /** * <bold>true</bold> iff res contains extra header identifying it as * having been inserted directly into the cache from a PUSH source */ public boolean isPushResource(CachedResource res) { if(res!=null) { ArrayDictionary dict=res.getExtraHeaders(); String v=(String)dict.get(HEADER_FIELD); if(v!=null && v.equalsIgnoreCase(HEADER_VALUE)) { return(true); } } return(false); } /** * Store a push reply in the cache */ public void storeReply(PushReply reply) { try { String url=reply.getUrl(); // // forge request for this reply // Request request = HttpManager.getManager().createRequest() ; request.setMethod("GET"); request.setURL(new URL(url)); // // remove old page if present // removeURL(url); // // Store new resource // CachedResource res= new PushEntityCachedResource(_filter, request,reply); getStore().storeCachedResource(res,res.getContentLength()); _filter.sync(); } catch(Exception e) { e.printStackTrace(); } } /** * Remove a reply from the cache */ public void removeURL(String url) { try { deleteRes(getStore().getCachedResourceReference(url)); } catch(Exception e) { e.printStackTrace(); } } /** * True iff url is present in cache */ public boolean isPresent(String url) { try { CachedResource res=getStore().getCachedResourceReference(url); if(res==null) { // never been present in cache return(false); } if(res.getFile()==null || !res.getFile().exists()) { // We have seen this before, but has since been deleted return(false); } return(true); } catch(Exception e) { e.printStackTrace(); } return(false); } /** * Remove resource from cache */ protected void deleteRes(CachedResource res) { if(res!=null) { res.delete(); getStore().getState().notifyResourceDeleted(res); _filter.sync(); } } /** * Remove all entries from the cache */ public void cleanCache() { CacheGeneration gen=getStore().getMRUGeneration(); while(gen!=null) { Enumeration enum=gen.getCachedResources(); while(enum.hasMoreElements()) { deleteRes((CachedResource)enum.nextElement()); } gen=getStore().getNextGeneration(gen); } } /** * Called by PushCacheFilter on initialization */ protected void registerFilter(PushCacheFilter cf) { _filter=cf; } /** * Singleton; no public constructor * @see #instance */ protected PushCacheManager() { // NULL } /** * Access to filter store */ protected PushCacheStore getStore() { return(_filter.getPushCacheStore()); }}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?