org.h2.util.Cache Maven / Gradle / Ivy
/*
* Copyright 2004-2010 H2 Group. Multiple-Licensed under the H2 License,
* Version 1.0, and under the Eclipse Public License, Version 1.0
* (http://h2database.com/html/license.html).
* Initial Developer: H2 Group
*/
package org.h2.util;
import java.util.ArrayList;
/**
* The cache keeps frequently used objects in the main memory.
*/
public interface Cache {
/**
* Get all objects in the cache that have been changed.
*
* @return the list of objects
*/
ArrayList getAllChanged();
/**
* Clear the cache.
*/
void clear();
/**
* Get an element in the cache if it is available.
* This will move the item to the front of the list.
*
* @param pos the unique key of the element
* @return the element or null
*/
CacheObject get(int pos);
/**
* Add an element to the cache. Other items may fall out of the cache
* because of this. It is not allowed to add the same record twice.
*
* @param r the object
*/
void put(CacheObject r);
/**
* Update an element in the cache.
* This will move the item to the front of the list.
*
* @param pos the unique key of the element
* @param record the element
* @return the element
*/
CacheObject update(int pos, CacheObject record);
/**
* Remove an object from the cache.
*
* @param pos the unique key of the element
*/
void remove(int pos);
/**
* Get an element from the cache if it is available.
* This will not move the item to the front of the list.
*
* @param pos the unique key of the element
* @return the element or null
*/
CacheObject find(int pos);
/**
* Set the maximum memory to be used by this cache.
*
* @param size in number of double words (4 bytes)
*/
void setMaxSize(int size);
/**
* Get the maximum size in words (4 bytes).
*
* @return the maximum size in number of double words (4 bytes)
*/
int getMaxSize();
/**
* Get the used size in words (4 bytes).
*
* @return the current size in number of double words (4 bytes)
*/
int getSize();
}