20#ifndef JAMBA_EXPIRINGDATACACHE_H
21#define JAMBA_EXPIRINGDATACACHE_H
26#include <pongasoft/logging/logging.h>
30using namespace Steinberg;
71template<
typename T,
typename Ptr = std::shared_ptr<T>,
typename Loader = std::function<Ptr()>>
118 explicit operator bool() const noexcept {
return fDataLoader ? true :
false; }
157 std::unique_ptr<AutoReleaseTimer>
fTimer{};
static std::unique_ptr< AutoReleaseTimer > create(Steinberg::ITimerCallback *iCallback, Steinberg::uint32 iIntervalMilliseconds)
Creates and return an auto release timer.
Definition Timer.h:55
Loader loader
Definition ExpiringDataCache.h:77
ExpiringDataCache & operator=(ExpiringDataCache const &iOther) noexcept
Copy assignment operator.
Definition ExpiringDataCache.h:96
Ptr getData()
Main api to retrieve the data.
Definition ExpiringDataCache.h:127
ExpiringDataCache & operator=(ExpiringDataCache &&iOther) noexcept
Move assignment operator.
Definition ExpiringDataCache.h:107
void onTimer(Timer *timer) override
Definition ExpiringDataCache.h:146
Loader fDataLoader
Definition ExpiringDataCache.h:153
ExpiringDataCache(Loader iDataLoader, uint32 iTimeToLiveMilliseconds)
Main constructor with loader and TTL.
Definition ExpiringDataCache.h:84
ExpiringDataCache()=default
Default empty constructor => getData() always return nullptr.
std::unique_ptr< AutoReleaseTimer > fTimer
Definition ExpiringDataCache.h:157
uint32 fTimeToLiveMilliseconds
Definition ExpiringDataCache.h:154
ExpiringDataCache(ExpiringDataCache const &iOther)
Copy constructor.
Definition ExpiringDataCache.h:88
Ptr fCachedData
Definition ExpiringDataCache.h:156
ExpiringDataCache(ExpiringDataCache &&iOther) noexcept
Move constructor.
Definition ExpiringDataCache.h:92
Ptr pointer
Definition ExpiringDataCache.h:76
T value_type
Definition ExpiringDataCache.h:75
Definition ExpiringDataCache.h:28