## 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 <wolfgang@exist-db.org>

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.