Main Page | Packages | Class Hierarchy | Alphabetical List | Class List | File List | Class Members | Related Pages

RelaxedCaching.java

00001 /**
00002  * C-JDBC: Clustered JDBC.
00003  * Copyright (C) 2002-2004 French National Institute For Research In Computer
00004  * Science And Control (INRIA).
00005  * Contact: c-jdbc@objectweb.org
00006  * 
00007  * This library is free software; you can redistribute it and/or modify it
00008  * under the terms of the GNU Lesser General Public License as published by the
00009  * Free Software Foundation; either version 2.1 of the License, or any later
00010  * version.
00011  * 
00012  * This library is distributed in the hope that it will be useful, but WITHOUT
00013  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
00014  * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License
00015  * for more details.
00016  * 
00017  * You should have received a copy of the GNU Lesser General Public License
00018  * along with this library; if not, write to the Free Software Foundation,
00019  * Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
00020  *
00021  * Initial developer(s): Nicolas Modrzyk
00022  * Contributor(s): Emmanuel Cecchet.
00023  */
00024 
00025 package org.objectweb.cjdbc.controller.cache.result.rules;
00026 
00027 import org.objectweb.cjdbc.common.sql.SelectRequest;
00028 import org.objectweb.cjdbc.common.xml.DatabasesXmlTags;
00029 import org.objectweb.cjdbc.controller.cache.result.AbstractResultCache;
00030 import org.objectweb.cjdbc.controller.cache.result.CacheBehavior;
00031 import org.objectweb.cjdbc.controller.cache.result.entries.CacheEntry;
00032 import org.objectweb.cjdbc.controller.cache.result.entries.ResultCacheEntryRelaxed;
00033 import org.objectweb.cjdbc.controller.virtualdatabase.ControllerResultSet;
00034 
00035 /**
00036  * RelaxedCaching means we set a timeout value for this entry, and when expired
00037  * we keep in the cache if no write has modified the corresponding result, we
00038  * wait for the same amount of time again. RelaxedCaching may provide stale
00039  * data. The timeout defines the maximum staleness of a cache entry. It means
00040  * that the cache may return an entry that is out of date. timeout: is a value
00041  * in seconds and 0 means no timeout (always in the cache) keepIfNotDirty: if
00042  * true the entry is kept in the cache and the timeout is reset, if false, the
00043  * entry is removed from the cache after the timeout has expired even if the
00044  * entry was not affected by a write.
00045  * 
00046  * @author <a href="mailto:Nicolas.Modrzyk@inrialpes.fr">Nicolas Modrzyk </a>
00047  * @author <a href="mailto:Emmanuel.Cecchet@inria.fr">Emmanuel Cecchet </a>
00048  * @version 1.0
00049  */
00050 public class RelaxedCaching extends CacheBehavior
00051 {
00052   private long    timeout;
00053   private boolean keepIfNotDirty;
00054 
00055   /**
00056    * Create new RelaxedCaching action
00057    * 
00058    * @param timeout before we check the validity of an entry
00059    * @param keepIfNotDirty true if non-dirty entries must be kept in the cache
00060    */
00061   public RelaxedCaching(boolean keepIfNotDirty, long timeout)
00062   {
00063     this.keepIfNotDirty = keepIfNotDirty;
00064     this.timeout = timeout;
00065   }
00066 
00067   /**
00068    * @see org.objectweb.cjdbc.controller.cache.result.CacheBehavior#getCacheEntry(SelectRequest,
00069    *      ControllerResultSet, AbstractResultCache)
00070    */
00071   public CacheEntry getCacheEntry(SelectRequest sqlQuery,
00072       ControllerResultSet result, AbstractResultCache cache)
00073   {
00074     return new ResultCacheEntryRelaxed(sqlQuery, result, timeout,
00075         keepIfNotDirty);
00076   }
00077 
00078   /**
00079    * @see org.objectweb.cjdbc.common.xml.XmlComponent#getXml()
00080    */
00081   public String getXml()
00082   {
00083     return "<" + DatabasesXmlTags.ELT_RelaxedCaching + " "
00084         + DatabasesXmlTags.ATT_timeout + "=\"" + timeout / 1000 + "\" "
00085         + DatabasesXmlTags.ATT_keepIfNotDirty + "=\"" + keepIfNotDirty + "\"/>";
00086   }
00087 
00088 }

Generated on Mon Apr 11 22:01:34 2005 for C-JDBC by  doxygen 1.3.9.1