#include <userver/cache/cache_update_trait.hpp>
Base class for periodically updated caches.
- Note
- Don't use directly, inherit from components::CachingComponentBase instead
Definition at line 30 of file cache_update_trait.hpp.
|
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 | 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.
|
|
◆ Flag
Periodic update flags.
Enumerator |
---|
kNoFirstUpdate | Disable initial update on start.
|
Definition at line 62 of file cache_update_trait.hpp.
◆ InvalidateAsync()
void cache::CacheUpdateTrait::InvalidateAsync |
( |
UpdateType | update_type | ) |
|
Non-blocking forced cache update of specified type.
- See also
- PeriodicTask::ForceStepAsync for behavior details
◆ Name()
const std::string & cache::CacheUpdateTrait::Name |
( |
| ) |
const |
- Returns
- name of the component
◆ OnCacheModified()
void cache::CacheUpdateTrait::OnCacheModified |
( |
| ) |
|
|
protected |
Called in CachingComponentBase::Set
during update to indicate that the cached data has been modified
◆ StopPeriodicUpdates()
void cache::CacheUpdateTrait::StopPeriodicUpdates |
( |
| ) |
|
|
protected |
Stops periodic updates.
- Warning
- Should be called in destructor of derived class.
◆ Update()
virtual void cache::CacheUpdateTrait::Update |
( |
UpdateType | type, |
|
|
const std::chrono::system_clock::time_point & | last_update, |
|
|
const std::chrono::system_clock::time_point & | now, |
|
|
UpdateStatisticsScope & | stats_scope ) |
|
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...
- call CachingComponentBase::Set to update the stored value and send a notification to subscribers
- call UpdateStatisticsScope::Finish
- return normally (an exception is allowed in edge cases) B. If the update succeeded and verified that there are no changes...
- DON'T call CachingComponentBase::Set
- call UpdateStatisticsScope::FinishNoChanges
- return normally (an exception is allowed in edge cases) C. If the update failed...
- DON'T call CachingComponentBase::Set
- call UpdateStatisticsScope::FinishWithError, or...
- throw an exception, which will be logged nicely
- Parameters
-
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 |
- Exceptions
-
std::exception | on update failure |
- Warning
- If
Update
returns without throwing an exception and without calling one of the Finish*
methods, the behavior is undefined.
- See also
- Basics of Caches
◆ UpdateSyncDebug()
void cache::CacheUpdateTrait::UpdateSyncDebug |
( |
UpdateType | update_type | ) |
|
Forces a cache update of specified type.
- Exceptions
-
The documentation for this class was generated from the following file: