# Poco

# template < class TKey, class TValue >

# class AbstractStrategy

Library: Foundation
Package: Cache
Header: Poco/AbstractStrategy.h

## Description

An AbstractStrategy is the interface for all strategies.

## Member Summary

Member Functions: onAdd, onClear, onGet, onIsValid, onRemove, onReplace, onUpdate

## Constructors

### AbstractStrategy

AbstractStrategy() = default;

## Destructor

### ~AbstractStrategy

virtual ~AbstractStrategy() = default;

## Member Functions

### onAdd

virtual void onAdd(
const void * pSender,
const KeyValueArgs < TKey, TValue > & key
) = 0;

Adds the key to the strategy. If for the key already an entry exists, an exception will be thrown.

### onClear

virtual void onClear(
const void * pSender,
const EventArgs & args
) = 0;

Removes all elements from the cache.

### onGet

virtual void onGet(
const void * pSender,
const TKey & key
) = 0;

Informs the strategy that a read-access happens to an element.

### onIsValid

virtual void onIsValid(
const void * pSender,
ValidArgs < TKey > & key
) = 0;

Used to query if a key is still valid (i.e. cached).

### onRemove

virtual void onRemove(
const void * pSender,
const TKey & key
) = 0;

Removes an entry from the strategy. If the entry is not found the remove is ignored.

### onReplace

virtual void onReplace(
const void * pSender,
std::set < TKey > & elemsToRemove
) = 0;

Used by the Strategy to indicate which elements should be removed from the cache. Note that onReplace does not change the current list of keys. The cache object is responsible to remove the elements.

### onUpdate

virtual void onUpdate(
const void * pSender,
const KeyValueArgs < TKey, TValue > & args
);

Updates an existing entry.