asmuts 02/05/13 15:16:18
Modified: src/java/org/apache/jcs/engine/control Cache.java
src/java/org/apache/jcs/engine/control/event
ElementEventQueue.java
src/java/org/apache/jcs/engine/behavior ICompositeCache.java
src/java/org/apache/jcs/engine/memory/behavior
IMemoryCache.java
src/java/org/apache/jcs/engine/memory/lru
LRUMemoryCache.java
src/java/org/apache/jcs/engine/memory MemoryCache.java
src/java/org/apache/jcs/engine/memory/mru
MRUMemoryCache.java
src/java/org/apache/jcs/engine/memory/shrinking
ShrinkerThread.java
Log:
Element Event Q, will add testers tomorrow
Revision Changes Path
1.8 +36 -1
jakarta-turbine-jcs/src/java/org/apache/jcs/engine/control/Cache.java
Index: Cache.java
===================================================================
RCS file:
/home/cvs/jakarta-turbine-jcs/src/java/org/apache/jcs/engine/control/Cache.java,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -r1.7 -r1.8
--- Cache.java 13 Apr 2002 04:01:33 -0000 1.7
+++ Cache.java 13 May 2002 22:16:17 -0000 1.8
@@ -72,10 +72,18 @@
import org.apache.jcs.engine.behavior.ICompositeCache;
import org.apache.jcs.engine.behavior.ICompositeCacheAttributes;
import org.apache.jcs.engine.behavior.IElementAttributes;
+
import org.apache.jcs.engine.memory.MemoryCache;
import org.apache.jcs.engine.memory.MemoryElementDescriptor;
import org.apache.jcs.engine.memory.lru.LRUMemoryCache;
+import org.apache.jcs.engine.control.event.ElementEvent;
+import org.apache.jcs.engine.control.event.behavior.IElementEventHandler;
+import org.apache.jcs.engine.control.event.behavior.IElementEvent;
+import org.apache.jcs.engine.control.event.behavior.IElementEventConstants;
+import org.apache.jcs.engine.control.event.behavior.IElementEventQueue;
+import org.apache.jcs.engine.control.event.ElementEventQueue;
+
/**
* This is the primary hub for a single cache/region. It control the flow of
* items through the cache. The auxiliary and memory caches are plugged in
@@ -83,7 +91,7 @@
*
* @author <a href="mailto:[EMAIL PROTECTED]">Aaron Smuts</a>
* @author <a href="mailto:[EMAIL PROTECTED]">James Taylor</a>
- * @version $Id: Cache.java,v 1.7 2002/04/13 04:01:33 jtaylor Exp $
+ * @version $Id: Cache.java,v 1.8 2002/05/13 22:16:17 asmuts Exp $
*/
public class Cache
implements ICache, ICompositeCache, Serializable
@@ -110,6 +118,13 @@
*/
public ICompositeCacheAttributes cacheAttr;
+
+ /**
+ * Cache Attributes, for hub and memory auxiliary
+ */
+ public IElementEventQueue elementEventQ;
+
+
// Statistics
// FIXME: Provide accessors for these for instrumentation
@@ -152,6 +167,8 @@
this.attr = attr;
this.cacheAttr = cattr;
+ elementEventQ = new ElementEventQueue( cacheName );
+
createMemoryCache( cattr );
if ( log.isDebugEnabled() )
@@ -1002,6 +1019,24 @@
}
return ce.getElementAttributes();
}
+
+
+ /**
+ * Adds an ElementEvent to be handled
+ *
+ * @param hand The IElementEventHandler
+ * @param event The IElementEventHandler IElementEvent event
+ */
+ public void addElementEvent( IElementEventHandler hand, IElementEvent event )
+ throws IOException
+ {
+ if ( log.isDebugEnabled() )
+ {
+ log.debug( "Adding to Q" );
+ }
+ elementEventQ.addElementEvent( hand, event );
+ }
+
/**
* Create the MemoryCache based on the config parameters. TODO: consider
1.2 +17 -1
jakarta-turbine-jcs/src/java/org/apache/jcs/engine/control/event/ElementEventQueue.java
Index: ElementEventQueue.java
===================================================================
RCS file:
/home/cvs/jakarta-turbine-jcs/src/java/org/apache/jcs/engine/control/event/ElementEventQueue.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- ElementEventQueue.java 13 May 2002 20:40:29 -0000 1.1
+++ ElementEventQueue.java 13 May 2002 22:16:18 -0000 1.2
@@ -24,7 +24,7 @@
private String cacheName;
- private boolean destroyed;
+ private boolean destroyed = false;
private Thread t;
// Internal queue implementation
@@ -105,6 +105,12 @@
public void addElementEvent( IElementEventHandler hand, IElementEvent event )
throws IOException
{
+
+ if ( log.isDebugEnabled() )
+ {
+ log.debug( "Adding Event Handler to QUEUE, !destroyed = " + !destroyed );
+ }
+
if ( !destroyed )
{
ElementEventRunner runner = new ElementEventRunner( hand, event );
@@ -141,6 +147,11 @@
while ( head == tail )
{
+ if ( log.isDebugEnabled() )
+ {
+ log.debug( "Waiting for something to come in to the Q" );
+ }
+
queueLock.wait();
}
@@ -279,6 +290,10 @@
ElementEventRunner( IElementEventHandler hand, IElementEvent event )
throws IOException
{
+ if ( log.isDebugEnabled() )
+ {
+ log.debug( "Constructing " + this );
+ }
this.hand = hand;
this.event = event;
}
@@ -291,6 +306,7 @@
protected void doRun()
throws IOException
{
+
hand.handleElementEvent( event );
}
}
1.4 +17 -0
jakarta-turbine-jcs/src/java/org/apache/jcs/engine/behavior/ICompositeCache.java
Index: ICompositeCache.java
===================================================================
RCS file:
/home/cvs/jakarta-turbine-jcs/src/java/org/apache/jcs/engine/behavior/ICompositeCache.java,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- ICompositeCache.java 13 May 2002 20:40:54 -0000 1.3
+++ ICompositeCache.java 13 May 2002 22:16:18 -0000 1.4
@@ -3,6 +3,13 @@
import java.io.IOException;
import java.io.Serializable;
+// this sort of breaks the package dependency. Should probably move
+// the event packages lower
+import org.apache.jcs.engine.control.event.ElementEvent;
+import org.apache.jcs.engine.control.event.behavior.IElementEventHandler;
+import org.apache.jcs.engine.control.event.behavior.IElementEvent;
+import org.apache.jcs.engine.control.event.behavior.IElementEventConstants;
+
/**
* Much like the ICache interface, but this is specifically designed for the
* CompositeCaches. This interface guarantees a simple set of methods for use by
@@ -63,5 +70,15 @@
* @return The cacheName value
*/
public String getCacheName();
+
+ /**
+ * Adds an ElementEvent to be handled
+ *
+ * @param hand The IElementEventHandler
+ * @param event The IElementEventHandler IElementEvent event
+ */
+ public void addElementEvent( IElementEventHandler hand, IElementEvent event )
+ throws IOException;
+
}
1.5 +9 -0
jakarta-turbine-jcs/src/java/org/apache/jcs/engine/memory/behavior/IMemoryCache.java
Index: IMemoryCache.java
===================================================================
RCS file:
/home/cvs/jakarta-turbine-jcs/src/java/org/apache/jcs/engine/memory/behavior/IMemoryCache.java,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -r1.4 -r1.5
--- IMemoryCache.java 13 May 2002 18:31:41 -0000 1.4
+++ IMemoryCache.java 13 May 2002 22:16:18 -0000 1.5
@@ -9,6 +9,7 @@
import org.apache.jcs.engine.behavior.ICacheHub;
import org.apache.jcs.engine.behavior.ICacheType;
import org.apache.jcs.engine.behavior.ICompositeCacheAttributes;
+import org.apache.jcs.engine.behavior.ICompositeCache;
import org.apache.jcs.engine.memory.MemoryElementDescriptor;
import org.apache.jcs.engine.control.Cache;
@@ -160,5 +161,13 @@
*@param cattr The new cacheAttributes value
*/
public void setCacheAttributes( ICompositeCacheAttributes cattr );
+
+ /**
+ * Gets the cache hub / region taht the MemoryCache is used by
+ *
+ *@return The cache value
+ */
+ public ICompositeCache getCompositeCache();
+
}
1.9 +14 -1
jakarta-turbine-jcs/src/java/org/apache/jcs/engine/memory/lru/LRUMemoryCache.java
Index: LRUMemoryCache.java
===================================================================
RCS file:
/home/cvs/jakarta-turbine-jcs/src/java/org/apache/jcs/engine/memory/lru/LRUMemoryCache.java,v
retrieving revision 1.8
retrieving revision 1.9
diff -u -r1.8 -r1.9
--- LRUMemoryCache.java 13 May 2002 19:58:09 -0000 1.8
+++ LRUMemoryCache.java 13 May 2002 22:16:18 -0000 1.9
@@ -13,6 +13,7 @@
import org.apache.jcs.engine.CacheElement;
import org.apache.jcs.engine.behavior.ICacheElement;
import org.apache.jcs.engine.behavior.ICompositeCacheAttributes;
+import org.apache.jcs.engine.behavior.ICompositeCache;
import org.apache.jcs.engine.behavior.IElementAttributes;
import org.apache.jcs.engine.control.Cache;
import org.apache.jcs.engine.memory.MemoryCache;
@@ -33,7 +34,7 @@
*@author <a href="mailto:[EMAIL PROTECTED]">Aaron Smuts</a>
*@author <a href="mailto:[EMAIL PROTECTED]">James Taylor</a>
*@created May 13, 2002
- *@version $Id: LRUMemoryCache.java,v 1.8 2002/05/13 19:58:09 asmuts Exp $
+ *@version $Id: LRUMemoryCache.java,v 1.9 2002/05/13 22:16:18 asmuts Exp $
*/
public class LRUMemoryCache implements MemoryCache, Serializable
{
@@ -480,6 +481,18 @@
{
this.cattr = cattr;
}
+
+
+ /**
+ * Gets the cache hub / region taht the MemoryCache is used by
+ *
+ *@return The cache value
+ */
+ public ICompositeCache getCompositeCache()
+ {
+ return this.cache;
+ }
+
// --------------------------- internal mehods (linked list implementation)
1.6 +10 -1
jakarta-turbine-jcs/src/java/org/apache/jcs/engine/memory/MemoryCache.java
Index: MemoryCache.java
===================================================================
RCS file:
/home/cvs/jakarta-turbine-jcs/src/java/org/apache/jcs/engine/memory/MemoryCache.java,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -r1.5 -r1.6
--- MemoryCache.java 13 May 2002 18:41:03 -0000 1.5
+++ MemoryCache.java 13 May 2002 22:16:18 -0000 1.6
@@ -6,6 +6,7 @@
import org.apache.jcs.engine.behavior.ICacheElement;
import org.apache.jcs.engine.behavior.ICompositeCacheAttributes;
+import org.apache.jcs.engine.behavior.ICompositeCache;
import org.apache.jcs.engine.control.Cache;
/**
@@ -16,7 +17,7 @@
*@author <a href="mailto:[EMAIL PROTECTED]">Aaron Smuts</a>
*@author <a href="mailto:[EMAIL PROTECTED]">James Taylor</a>
*@created May 13, 2002
- *@version $Id: MemoryCache.java,v 1.5 2002/05/13 18:41:03 asmuts Exp $
+ *@version $Id: MemoryCache.java,v 1.6 2002/05/13 22:16:18 asmuts Exp $
*/
public interface MemoryCache
{
@@ -126,5 +127,13 @@
*@param cattr The new cacheAttributes value
*/
public void setCacheAttributes( ICompositeCacheAttributes cattr );
+
+
+ /**
+ * Gets the cache hub / region taht the MemoryCache is used by
+ *
+ *@return The cache value
+ */
+ public ICompositeCache getCompositeCache();
}
1.6 +15 -1
jakarta-turbine-jcs/src/java/org/apache/jcs/engine/memory/mru/MRUMemoryCache.java
Index: MRUMemoryCache.java
===================================================================
RCS file:
/home/cvs/jakarta-turbine-jcs/src/java/org/apache/jcs/engine/memory/mru/MRUMemoryCache.java,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -r1.5 -r1.6
--- MRUMemoryCache.java 13 May 2002 18:12:27 -0000 1.5
+++ MRUMemoryCache.java 13 May 2002 22:16:18 -0000 1.6
@@ -13,12 +13,15 @@
import org.apache.jcs.engine.CacheConstants;
import org.apache.jcs.engine.behavior.ICacheElement;
import org.apache.jcs.engine.behavior.ICompositeCacheAttributes;
+import org.apache.jcs.engine.behavior.ICompositeCache;
import org.apache.jcs.engine.behavior.IElementAttributes;
import org.apache.jcs.engine.control.Cache;
import org.apache.jcs.engine.memory.MemoryCache;
import org.apache.jcs.engine.memory.MemoryElementDescriptor;
import org.apache.jcs.engine.memory.shrinking.ShrinkerThread;
+import org.apache.jcs.engine.behavior.ICompositeCache;
+
/**
* A SLOW AS HELL reference management system. The most recently used items move
* to the front of the list and get spooled to disk if the cache hub is
@@ -26,7 +29,7 @@
*
* @author <a href="mailto:[EMAIL PROTECTED]">Aaron Smuts</a>
* @author <a href="mailto:[EMAIL PROTECTED]">James Taylor</a>
- * @version $Id: MRUMemoryCache.java,v 1.5 2002/05/13 18:12:27 asmuts Exp $
+ * @version $Id: MRUMemoryCache.java,v 1.6 2002/05/13 22:16:18 asmuts Exp $
*/
public class MRUMemoryCache
implements MemoryCache, Serializable
@@ -514,6 +517,17 @@
{
this.cattr = cattr;
}
+
+ /**
+ * Gets the cache hub / region taht the MemoryCache is used by
+ *
+ *@return The cache value
+ */
+ public ICompositeCache getCompositeCache()
+ {
+ return this.cache;
+ }
+
/**
* Dump the cache map for debugging.
1.8 +8 -2
jakarta-turbine-jcs/src/java/org/apache/jcs/engine/memory/shrinking/ShrinkerThread.java
Index: ShrinkerThread.java
===================================================================
RCS file:
/home/cvs/jakarta-turbine-jcs/src/java/org/apache/jcs/engine/memory/shrinking/ShrinkerThread.java,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -r1.7 -r1.8
--- ShrinkerThread.java 13 May 2002 18:46:25 -0000 1.7
+++ ShrinkerThread.java 13 May 2002 22:16:18 -0000 1.8
@@ -143,6 +143,9 @@
* it. 3. Has the item exceeded IdleTime defined in the element atributes?
* If so, remove it. If there are event listeners registered for the cache
* element, they will be called.
+ *
+ *@TODO Change element event handling to use the queue, then move the
+ * queue to the region and access via the Cache.
*/
protected void shrink()
{
@@ -155,6 +158,7 @@
try
{
+
Object[] keys = cache.getKeyArray();
int size = keys.length;
for ( int i = 0; i < size; i++ )
@@ -203,7 +207,8 @@
while ( hIt.hasNext() )
{
IElementEventHandler hand = (
IElementEventHandler ) hIt.next();
- hand.handleElementEvent( event );
+ //hand.handleElementEvent( event );
+ cache.getCompositeCache().addElementEvent(
hand, event );
}
}
@@ -232,7 +237,8 @@
while ( hIt.hasNext() )
{
IElementEventHandler hand = (
IElementEventHandler ) hIt.next();
- hand.handleElementEvent( event );
+ //hand.handleElementEvent( event );
+ cache.getCompositeCache().addElementEvent(
hand, event );
}
}
--
To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]>
For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>