12 template <
typename KEY,
typename VALUE,
typename TRAITS>
17 template <
typename KEY,
typename VALUE,
typename TRAITS>
19 : inherited{
src.GetMinimumAllowedFreshness ()}
22 for (
const auto& ci : src.
Elements ()) {
26 template <
typename KEY,
typename VALUE,
typename TRAITS>
30 return inherited::GetMinimumAllowedFreshness ();
32 template <
typename KEY,
typename VALUE,
typename TRAITS>
38 template <
typename KEY,
typename VALUE,
typename TRAITS>
42 return inherited::Elements ();
44 template <
typename KEY,
typename VALUE,
typename TRAITS>
49 return inherited::Lookup (
key);
51 template <
typename KEY,
typename VALUE,
typename TRAITS>
57 return inherited::Lookup (key);
59 template <
typename KEY,
typename VALUE,
typename TRAITS>
69 auto&&
readLock = shared_lock{fMutex_};
75 if (fHoldWriteLockDuringCacheFill) {
91 template <
typename KEY,
typename VALUE,
typename TRAITS>
100 template <
typename KEY,
typename VALUE,
typename TRAITS>
107 template <
typename KEY,
typename VALUE,
typename TRAITS>
111 inherited::Remove (
key);
113 template <
typename KEY,
typename VALUE,
typename TRAITS>
119 template <
typename KEY,
typename VALUE,
typename TRAITS>
123 inherited::PurgeSpoiledData ();
time_point< RealtimeClock, DurationSeconds > TimePointSeconds
TimePointSeconds is a simpler approach to chrono::time_point, which doesn't require using templates e...
LRUCache implements a simple least-recently-used caching strategy, with optional hashing (of keys) to...
nonvirtual void PurgeSpoiledData()
nonvirtual void Add(typename Common::ArgByValueType< KEY > key, typename Common::ArgByValueType< VALUE > result, TimedCacheSupport::PurgeSpoiledDataFlagType purgeSpoiledData=PurgeSpoiledDataFlagType::eAutomaticallyPurgeSpoiledData)
nonvirtual VALUE LookupValue(typename Common::ArgByValueType< KEY > key, const function< VALUE(typename Common::ArgByValueType< KEY >)> &cacheFiller, LookupMarksDataAsRefreshed successfulLookupRefreshesAcceesFlag=LookupMarksDataAsRefreshed::eDontTreatFoundThroughLookupAsRefreshed, PurgeSpoiledDataFlagType purgeSpoiledData=PurgeSpoiledDataFlagType::eAutomaticallyPurgeSpoiledData)
nonvirtual void SetMinimumAllowedFreshness(Time::Duration minimumAllowedFreshness)
nonvirtual void Remove(typename Common::ArgByValueType< KEY > key)
nonvirtual Time::Duration GetMinimumAllowedFreshness() const
SynchronizedTimedCache(const Time::Duration &minimumAllowedFreshness)
nonvirtual optional< VALUE > Lookup(typename Common::ArgByValueType< KEY > key, Time::TimePointSeconds *lastRefreshedAt=nullptr) const
nonvirtual Traversal::Iterable< CacheElement > Elements() const
Keep track of a bunch of objects, each with an associated 'freshness' which meet a TimedCache-associa...
nonvirtual void Add(typename Common::ArgByValueType< KEY > key, typename Common::ArgByValueType< VALUE > result, PurgeSpoiledDataFlagType purgeSpoiledData=PurgeSpoiledDataFlagType::eAutomaticallyPurgeSpoiledData)
Duration is a chrono::duration<double> (=.
conditional_t<(sizeof(CHECK_T)<=2 *sizeof(void *)) and is_trivially_copyable_v< CHECK_T >, CHECK_T, const CHECK_T & > ArgByValueType
This is an alias for 'T' - but how we want to pass it on stack as formal parameter.