org.exist.storage.cache
Interface Cache

All Known Implementing Classes:
GClockCache, LRUCache

public interface Cache

Base interface for all cache implementations that are used for buffering btree and data pages.

Author:
Wolfgang

Field Summary
static org.apache.log4j.Logger LOG
           
 
Method Summary
 void add(Cacheable item)
          Add the item to the cache.
 void add(Cacheable item, int initialRefCount)
          Add the item to the cache.
 boolean flush()
          Call release on all items, but without actually removing them from the cache.
 Cacheable get(Cacheable item)
          Retrieve an item from the cache.
 Cacheable get(long key)
          Retrieve an item by its key.
 int getBuffers()
          Get the size of this cache.
 int getFails()
          Get the number of times where an object could not be found in the cache.
 java.lang.String getFileName()
           
 double getGrowthFactor()
          Returns the factor by which the cache should grow if it can be resized.
 int getHits()
          Get the number of times where an object has been successfully loaded from the cache.
 int getLoad()
           
 int getUsedBuffers()
          Get the number of buffers currently used.
 boolean hasDirtyItems()
          Returns true if the cache contains any dirty items that need to be written to disk.
 void remove(Cacheable item)
          Remove an item from the cache.
 void resize(int newSize)
          Resize the cache.
 void setCacheManager(CacheManager manager)
          Set the CacheManager object that controls this cache.
 void setFileName(java.lang.String fileName)
           
 

Field Detail

LOG

public static final org.apache.log4j.Logger LOG
Method Detail

add

public void add(Cacheable item)
Add the item to the cache. If it is already in the cache, update the references.

Parameters:
item -

add

public void add(Cacheable item,
                int initialRefCount)
Add the item to the cache. If it is already in the cache, update the references.

Parameters:
item -
initialRefCount - the initial reference count for the item

get

public Cacheable get(Cacheable item)
Retrieve an item from the cache.

Parameters:
item -
Returns:
the item in the cache or null if it does not exist.

get

public Cacheable get(long key)
Retrieve an item by its key.

Parameters:
key - a unique key, usually the page number
Returns:
the item in the cache or null if it does not exist.

remove

public void remove(Cacheable item)
Remove an item from the cache.

Parameters:
item -

hasDirtyItems

public boolean hasDirtyItems()
Returns true if the cache contains any dirty items that need to be written to disk.


flush

public boolean flush()
Call release on all items, but without actually removing them from the cache. This gives the items a chance to write all unwritten data to disk.


getBuffers

public int getBuffers()
Get the size of this cache.

Returns:
size

getGrowthFactor

public double getGrowthFactor()
Returns the factor by which the cache should grow if it can be resized. The returned factor f will be between 0 and 2. A value smaller or equal to 1 means the cache can't grow, 1.5 means it grows by 50 percent. A cache with growth factor <= 1.0 can also not be shrinked. A cache is resized by the CacheManager.

Returns:
growth factor

resize

public void resize(int newSize)
Resize the cache. This method is called by the CacheManager. The newSize parameter can either be larger or smaller than the current cache size.

Parameters:
newSize - the new size of the cache.

setCacheManager

public void setCacheManager(CacheManager manager)
Set the CacheManager object that controls this cache.

Parameters:
manager -

getUsedBuffers

public int getUsedBuffers()
Get the number of buffers currently used.


getHits

public int getHits()
Get the number of times where an object has been successfully loaded from the cache.


getFails

public int getFails()
Get the number of times where an object could not be found in the cache.

Returns:
number of times where an object could not be found in the cache

getLoad

public int getLoad()

setFileName

public void setFileName(java.lang.String fileName)

getFileName

public java.lang.String getFileName()


Copyright (C) Wolfgang Meier. All rights reserved.