/* * $Id: TimeLimitedCachingStrategy.java,v 1.2 2006/09/25 08:52:36 acaproni Exp $ * * $Date: 2006/09/25 08:52:36 $ * $Revision: 1.2 $ * $Author: acaproni $ * * Copyright CERN, All Rights Reserved. */ package cern.gp.nodes.cache; /** * A caching strategy based on a given time. The objects are cached for a given fixed time * that is given at construction time * * @author Vito Baggiolini * @version $Revision: 1.2 $ $Date: 2006/09/25 08:52:36 $ */ public class TimeLimitedCachingStrategy implements CachingStrategy { // variables related to timeout private final int timeoutMillis; // relative time private long lastAccessTimeMillis; // absolute time // // -- CONSTRUCTORS ----------------------------------------------- // /** * Constructs a new caching strategy based on the given time * @param timeoutMillis the timeout for the cache */ public TimeLimitedCachingStrategy(int timeoutMillis) { this.timeoutMillis = timeoutMillis; } // // -- PUBLIC METHODS ----------------------------------------------- // // // -- implements CachingStrategy ----------------------------------------------- // public boolean isCacheValid() { if (lastAccessTimeMillis == 0) { // first access lastAccessTimeMillis = System.currentTimeMillis(); return false; } else { if (timeoutMillis <= 0) { return false; } else { return (System.currentTimeMillis() - lastAccessTimeMillis < timeoutMillis); } } } public void validateCache() { lastAccessTimeMillis = System.currentTimeMillis(); } public void invalidateCache() { lastAccessTimeMillis = 0; } }