/*
***************************************************************************************
* Copyright (C) 2006 EsperTech, Inc. All rights reserved. *
* http://www.espertech.com/esper *
* http://www.espertech.com *
* ---------------------------------------------------------------------------------- *
* The software in this package is published under the terms of the GPL license *
* a copy of which has been included with this distribution in the license.txt file. *
***************************************************************************************
*/
package com.espertech.esper.epl.db;
import com.espertech.esper.epl.join.table.EventTable;
/**
* Implementations serve as caches for historical or reference data retrieved
* via lookup keys consisting or one or more rows represented by a list of events.
*/
public interface DataCache {
/**
* Ask the cache if the keyed value is cached, returning a list or rows if the key is in the cache,
* or returning null to indicate no such key cached. Zero rows may also be cached.
*
* @param methodParams is the keys to look up in the cache
* @param numLookupKeys number of method param keys, from the start, that are for cache lookup
* @return a list of rows that can be empty is the key was found in the cache, or null if
* the key is not found in the cache
*/
public EventTable[] getCached(Object[] methodParams, int numLookupKeys);
/**
* Puts into the cache a key and a list of rows, or an empty list if zero rows.
* <p>
* The put method is designed to be called when the cache does not contain a key as
* determined by the get method. Implementations typically simply overwrite
* any keys put into the cache that already existed in the cache.
* @param methodParams is the keys to the cache entry
* @param numLookupKeys number of method param keys, from the start, that are for cache lookup
* @param rows is a number of rows
*/
public void put(Object[] methodParams, int numLookupKeys, EventTable[] rows);
/**
* Returns true if the cache is active and currently caching, or false if the cache is inactive and not currently caching
*
* @return true for caching enabled, false for no caching taking place
*/
public boolean isActive();
void destroy();
}