#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: