template class Poco::AccessExpireLRUCache

Overview

An AccessExpireLRUCache combines LRU caching and time based expire caching. Moreā€¦

#include <AccessExpireLRUCache.h>

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

    AccessExpireLRUCache(
        long cacheSize = 1024,
        Timestamp::TimeDiff expire = 600000
        );
};

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();

Detailed Documentation

An AccessExpireLRUCache combines LRU caching and time based expire caching.

It cache entries for a fixed time period (per default 10 minutes) but also limits the size of the cache (per default: 1024).