Library: Foundation
Package: Cache
Header: Poco/AbstractCache.h
An AbstractCache is the interface of all caches.
Member Functions: add, clear, doAdd, doClear, doGet, doHas, doRemove, doReplace, doUpdate, forceReplace, get, getAllKeys, has, initialize, remove, size, uninitialize, update
typedef typename DataHolder::const_iterator ConstIterator;
typedef std::map < TKey, SharedPtr < TValue > > DataHolder;
typedef typename DataHolder::iterator Iterator;
typedef std::set < TKey > KeySet;
AbstractCache(
const TStrategy & strat
);
virtual ~AbstractCache();
void add(
const TKey & key,
const TValue & val
);
Adds the key value pair to the cache. If for the key already an entry exists, it will be overwritten.
void add(
const TKey & key,
SharedPtr < TValue > val
);
Adds the key value pair to the cache. Note that adding a NULL SharedPtr will fail! If for the key already an entry exists, it will be overwritten, ie. first a remove event is thrown, then a add event
void clear();
Removes all elements from the cache.
void forceReplace();
Forces cache replacement. Note that Poco's cache strategy use for efficiency reason no background thread which periodically triggers cache replacement. Cache Replacement is only started when the cache is modified from outside, i.e. add is called, or when a user tries to access an cache element via get. In some cases, i.e. expire based caching where for a long time no access to the cache happens, it might be desirable to be able to trigger cache replacement manually.
SharedPtr < TValue > get(
const TKey & key
);
Returns a SharedPtr of the value. The SharedPointer will remain valid even when cache replacement removes the element. If for the key no value exists, an empty SharedPtr is returned.
std::set < TKey > getAllKeys();
Returns a copy of all keys stored in the cache
bool has(
const TKey & key
) const;
Returns true if the cache contains a value for the key.
void remove(
const TKey & key
);
Removes an entry from the cache. If the entry is not found, the remove is ignored.
std::size_t size();
Returns the number of cached elements
void update(
const TKey & key,
const TValue & val
);
Adds the key value pair to the cache. Note that adding a NULL SharedPtr will fail! If for the key already an entry exists, it will be overwritten. The difference to add is that no remove or add events are thrown in this case, just a simply silent update is performed If the key doesnot exist the behavior is equal to add, ie. an add event is thrown
void update(
const TKey & key,
SharedPtr < TValue > val
);
Adds the key value pair to the cache. Note that adding a NULL SharedPtr will fail! If for the key already an entry exists, it will be overwritten. The difference to add is that no remove or add events are thrown in this case, just an Update is thrown If the key doesnot exist the behavior is equal to add, ie. an add event is thrown
void doAdd(
const TKey & key,
const TValue & val
);
Adds the key value pair to the cache. If for the key already an entry exists, it will be overwritten.
void doAdd(
const TKey & key,
SharedPtr < TValue > & val
);
Adds the key value pair to the cache. If for the key already an entry exists, it will be overwritten.
void doClear();
SharedPtr < TValue > doGet(
const TKey & key
);
Returns a SharedPtr of the cache entry, returns 0 if for the key no value was found
bool doHas(
const TKey & key
) const;
Returns true if the cache contains a value for the key
void doRemove(
Iterator it
);
Removes an entry from the cache. If the entry is not found the remove is ignored.
void doReplace();
void doUpdate(
const TKey & key,
const TValue & val
);
Adds the key value pair to the cache. If for the key already an entry exists, it will be overwritten.
void doUpdate(
const TKey & key,
SharedPtr < TValue > & val
);
Adds the key value pair to the cache. If for the key already an entry exists, it will be overwritten.
void initialize();
Sets up event registration.
void uninitialize();
Reverts event registration.
FIFOEvent < const KeyValueArgs < TKey, TValue >, TEventMutex > Add;
FIFOEvent < const EventArgs, TEventMutex > Clear;
FIFOEvent < const TKey, TEventMutex > Get;
FIFOEvent < const TKey, TEventMutex > Remove;
FIFOEvent < const KeyValueArgs < TKey, TValue >, TEventMutex > Update;
mutable FIFOEvent < ValidArgs < TKey > > IsValid;
mutable FIFOEvent < KeySet > Replace;
mutable DataHolder _data;
mutable TMutex _mutex;
TStrategy _strategy;