#include <userver/cache/cache_update_trait.hpp>
Base class for periodically updated caches.
Definition at line 30 of file cache_update_trait.hpp.
Public Member Functions | |
CacheUpdateTrait (CacheUpdateTrait &&)=delete | |
CacheUpdateTrait & | operator= (CacheUpdateTrait &&)=delete |
void | InvalidateAsync (UpdateType update_type) |
Non-blocking forced cache update of specified type. | |
void | UpdateSyncDebug (UpdateType update_type) |
Forces a cache update of specified type. | |
const std::string & | Name () const |
Protected Types | |
enum class | Flag { kNone = 0 , kNoFirstUpdate = 1 << 0 } |
Periodic update flags. More... | |
Protected Member Functions | |
AllowedUpdateTypes | GetAllowedUpdateTypes () const |
Update types configured for the cache. | |
void | StartPeriodicUpdates (utils::Flags< Flag > flags={}) |
Starts periodic updates. | |
void | StopPeriodicUpdates () |
Stops periodic updates. | |
void | AssertPeriodicUpdateStarted () |
void | AssertPeriodicUpdateStopped () |
void | OnCacheModified () |
virtual void | Update (UpdateType type, const std::chrono::system_clock::time_point &last_update, const std::chrono::system_clock::time_point &now, UpdateStatisticsScope &stats_scope)=0 |
Should be overridden in a derived class to align the stored data with some data source. | |
|
strongprotected |
Periodic update flags.
Enumerator | |
---|---|
kNoFirstUpdate | Disable initial update on start.
|
Definition at line 61 of file cache_update_trait.hpp.
void cache::CacheUpdateTrait::InvalidateAsync | ( | UpdateType | update_type | ) |
Non-blocking forced cache update of specified type.
const std::string & cache::CacheUpdateTrait::Name | ( | ) | const |
|
protected |
Called in CachingComponentBase::Set
during update to indicate that the cached data has been modified
|
protected |
Stops periodic updates.
|
protectedpure virtual |
Should be overridden in a derived class to align the stored data with some data source.
Update
implementation should do one of the following:
A. If the update succeeded and has changes...
B. If the update succeeded and verified that there are no changes...
C. If the update failed...
type | type of the update |
last_update | time of the last update (value of now from previous invocation of Update or default constructed value if this is the first Update). |
now | current time point |
std::exception | on update failure |
Update
returns without throwing an exception and without calling one of the Finish*
methods, the behavior is undefined.void cache::CacheUpdateTrait::UpdateSyncDebug | ( | UpdateType | update_type | ) |
Forces a cache update of specified type.
If | Update throws |