13 inline CallerStalenessCache_Traits_DEFAULT::TimeStampType CallerStalenessCache_Traits_DEFAULT::GetCurrentTimestamp ()
15 return Time::GetTickCount ();
23 template <
typename KEY,
typename VALUE,
typename TIME_TRAITS>
24 inline typename CallerStalenessCache<KEY, VALUE, TIME_TRAITS>::TimeStampType CallerStalenessCache<KEY, VALUE, TIME_TRAITS>::GetCurrentTimestamp ()
26 return TIME_TRAITS::GetCurrentTimestamp ();
28 template <
typename KEY,
typename VALUE,
typename TIME_TRAITS>
31 Require (backThisTime >= 0s);
32 return GetCurrentTimestamp () - backThisTime;
34 template <
typename KEY,
typename VALUE,
typename TIME_TRAITS>
37 if constexpr (same_as<void, KEY>) {
38 if (fData_.has_value ()
and fData_.fDataCapturedAt <
t) {
43 for (
auto i = fData_.begin (); i != fData_.end ();) {
44 if (i->fValue.fDataCapturedAt < t) {
45 fData_.Remove (i, &i);
53 template <
typename KEY,
typename VALUE,
typename TIME_TRAITS>
63 template <
typename KEY,
typename VALUE,
typename TIME_TRAITS>
70 template <
typename KEY,
typename VALUE,
typename TIME_TRAITS>
74 fData_ = myVal_{
move (v), GetCurrentTimestamp ()};
76 template <
typename KEY,
typename VALUE,
typename TIME_TRAITS>
83 template <
typename KEY,
typename VALUE,
typename TIME_TRAITS>
93 template <
typename KEY,
typename VALUE,
typename TIME_TRAITS>
104 template <
typename KEY,
typename VALUE,
typename TIME_TRAITS>
111 myVal_
mv{
move (v), GetCurrentTimestamp ()};
117 template <
typename KEY,
typename VALUE,
typename TIME_TRAITS>
118 template <
typename F,
typename K>
125 myVal_ mv{move (v), GetCurrentTimestamp ()};
127 return move (mv.fValue);
131 template <
typename KEY,
typename VALUE,
typename TIME_TRAITS>
132 template <
typename K>
134 const VALUE& defaultValue)
const
135 requires (IsKeyedCache<K>)
137 return Lookup (k, staleIfOlderThan).value_or (defaultValue);
139 template <
typename KEY,
typename VALUE,
typename TIME_TRAITS>
static TimeStampType Ago(TimeStampDifferenceType backThisTime)
nonvirtual optional< VALUE > Lookup(TimeStampType staleIfOlderThan) const
nonvirtual VALUE LookupValue(TimeStampType staleIfOlderThan, const function< VALUE()> &cacheFiller)
nonvirtual void Add(Common::ArgByValueType< VALUE > v)
LRUCache implements a simple least-recently-used caching strategy, with optional hashing (of keys) to...
nonvirtual void Add(typename Common::ArgByValueType< KEY > key, typename Common::ArgByValueType< VALUE > value)
nonvirtual optional< VALUE > Lookup(typename Common::ArgByValueType< KEY > key)
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.
AddReplaceMode
Mode flag to say if Adding to a container replaces, or if the first addition wins.