Mercurial > hg > blitz_condensed
diff src/org/dancres/blitz/arc/CacheBlockDescriptor.java @ 0:3dc0c5604566
Initial checkin of blitz 2.0 fcs - no installer yet.
author | Dan Creswell <dan.creswell@gmail.com> |
---|---|
date | Sat, 21 Mar 2009 11:00:06 +0000 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/org/dancres/blitz/arc/CacheBlockDescriptor.java Sat Mar 21 11:00:06 2009 +0000 @@ -0,0 +1,93 @@ +package org.dancres.blitz.arc; + +import java.util.logging.Level; + +import java.io.Serializable; + +import EDU.oswego.cs.dl.util.concurrent.Mutex; + +import org.dancres.struct.LinkedInstance; + +import org.dancres.blitz.cache.Identifiable; +import org.dancres.blitz.cache.Identifier; +import org.dancres.blitz.cache.CacheListenerSet; + +/** + Each object currently in cache is referenced via a CacbeBlockDescriptor + */ +public class CacheBlockDescriptor implements LinkedInstance { + private Identifier theIdentifier; + private Identifiable theContent; + + private LinkedInstance thePrev; + private LinkedInstance theNext; + + private int isWhere; + + private Mutex theLock = new Mutex(); + + CacheBlockDescriptor() { + } + + void acquire() throws InterruptedException { + theLock.acquire(); + } + + public void release() { + theLock.release(); + } + + public void setId(Identifier anIdentifier) { + theIdentifier = anIdentifier; + } + + public Identifier getId() { + return theIdentifier; + } + + public Identifiable getContent() { + return theContent; + } + + void setContent(Identifiable aContent) { + theContent = aContent; + } + + public void setNext(LinkedInstance aLinkedInstance) { + theNext = aLinkedInstance; + } + + public LinkedInstance getNext() { + return theNext; + } + + public void setPrev(LinkedInstance aLinkedInstance) { + thePrev = aLinkedInstance; + } + + public LinkedInstance getPrev() { + return thePrev; + } + + boolean isEmpty() { + return (theContent == null); + } + + /** + Marks the CBD as being on a particular list, T1, T2, B1 or B2. + + @see org.dancres.blitz.arc.Lru + */ + void setWhere(int aWhere) { + isWhere = aWhere; + } + + /** + Returns an indication of which list this CBD is on, T1, T2, B1 or B2. + + @see org.dancres.blitz.arc.Lru + */ + int getWhere() { + return isWhere; + } +}