template class Poco::LRUCache

An LRUCache implements Least Recently Used caching. The default size for a cache is 1024 entries.

#include <LRUCache.h>

template <
    class TKey,
    class TValue,
    class TMutex = FastMutex,
    class TEventMutex = FastMutex
    >
class LRUCache: public Poco::AbstractCache
{
public:
    // construction

    LRUCache(long size = 1024);
};

Inherited Members

public:
    // typedefs

    typedef std::map<TKey, SharedPtr<TValue>> DataHolder;
    typedef DataHolder::iterator Iterator;
    typedef DataHolder::const_iterator ConstIterator;
    typedef std::set<TKey> KeySet;

    // fields

    FIFOEvent<const KeyValueArgs<TKey, TValue>, TEventMutex> Add;
    FIFOEvent<const KeyValueArgs<TKey, TValue>, TEventMutex> Update;
    FIFOEvent<const TKey, TEventMutex> Remove;
    FIFOEvent<const TKey, TEventMutex> Get;
    FIFOEvent<const EventArgs, TEventMutex> Clear;

    // methods

    void
    add(
        const TKey& key,
        const TValue& val
        );

    void
    update(
        const TKey& key,
        const TValue& val
        );

    void
    add(
        const TKey& key,
        SharedPtr<TValue> val
        );

    void
    update(
        const TKey& key,
        SharedPtr<TValue> val
        );

    void
    remove(const TKey& key);

    bool
    has(const TKey& key) const;

    SharedPtr<TValue>
    get(const TKey& key);

    void
    clear();

    std::size_t
    size();

    void
    forceReplace();

    std::set<TKey>
    getAllKeys();

protected:
    // fields

    FIFOEvent<ValidArgs<TKey>> IsValid;
    FIFOEvent<KeySet> Replace;
    TStrategy _strategy;
    DataHolder _data;
    TMutex _mutex;

    // methods

    void
    initialize();

    void
    uninitialize();

    void
    doAdd(
        const TKey& key,
        const TValue& val
        );

    void
    doAdd(
        const TKey& key,
        SharedPtr<TValue>& val
        );

    void
    doUpdate(
        const TKey& key,
        const TValue& val
        );

    void
    doUpdate(
        const TKey& key,
        SharedPtr<TValue>& val
        );

    void
    doRemove(Iterator it);

    bool
    doHas(const TKey& key) const;

    SharedPtr<TValue>
    doGet(const TKey& key);

    void
    doClear();

    void
    doReplace();