22#include "data/BackendInterface.hpp"
23#include "etl/CacheLoaderSettings.hpp"
24#include "etl/impl/CacheLoader.hpp"
25#include "etl/impl/CursorFromAccountProvider.hpp"
26#include "etl/impl/CursorFromDiffProvider.hpp"
27#include "etl/impl/CursorFromFixDiffNumProvider.hpp"
28#include "util/Assert.hpp"
29#include "util/async/context/BasicExecutionContext.hpp"
30#include "util/log/Logger.hpp"
47template <
typename CacheType,
typename ExecutionContextType = util::async::CoroExecutionContext>
52 std::shared_ptr<BackendInterface> backend_;
53 std::reference_wrapper<CacheType> cache_;
56 ExecutionContextType ctx_;
57 std::unique_ptr<CacheLoaderType> loader_;
69 std::shared_ptr<BackendInterface>
const& backend,
87 ASSERT(not cache_.get().isFull(),
"Cache must not be full. seq = {}", seq);
90 cache_.get().setDisabled();
91 LOG(log_.
warn()) <<
"Cache is disabled. Not loading";
95 std::shared_ptr<impl::BaseCursorProvider> provider;
97 LOG(log_.
info()) <<
"Loading cache with cursor from num_cursors_from_diff="
101 LOG(log_.
info()) <<
"Loading cache with cursor from num_cursors_from_account="
103 provider = std::make_shared<impl::CursorFromAccountProvider>(
107 LOG(log_.
info()) <<
"Loading cache with cursor from num_diffs=" << settings_.
numCacheDiffs;
108 provider = std::make_shared<impl::CursorFromFixDiffNumProvider>(backend_, settings_.
numCacheDiffs);
111 loader_ = std::make_unique<CacheLoaderType>(
118 provider->getCursors(seq)
123 ASSERT(cache_.get().isFull(),
"Cache must be full after sync load. seq = {}", seq);
133 if (loader_ !=
nullptr)
143 if (loader_ !=
nullptr)
Cache loading interface.
Definition CacheLoader.hpp:48
void load(uint32_t const seq)
Load the cache for the given sequence number.
Definition CacheLoader.hpp:85
void stop() noexcept
Requests the loader to stop asap.
Definition CacheLoader.hpp:131
void wait() noexcept
Waits for the loader to finish background work.
Definition CacheLoader.hpp:141
CacheLoader(util::config::ClioConfigDefinition const &config, std::shared_ptr< BackendInterface > const &backend, CacheType &cache)
Construct a new Cache Loader object.
Definition CacheLoader.hpp:67
Definition CacheLoader.hpp:49
A simple thread-safe logger for the channel specified in the constructor.
Definition Logger.hpp:110
Pump warn(SourceLocationType const &loc=CURRENT_SRC_LOCATION) const
Interface for logging at Severity::WRN severity.
Definition Logger.cpp:210
Pump info(SourceLocationType const &loc=CURRENT_SRC_LOCATION) const
Interface for logging at Severity::NFO severity.
Definition Logger.cpp:205
All the config data will be stored and extracted from this class.
Definition ConfigDefinition.hpp:54
This namespace contains everything to do with the ETL and ETL sources.
Definition CacheLoader.hpp:36
CacheLoaderSettings makeCacheLoaderSettings(util::config::ClioConfigDefinition const &config)
Create a CacheLoaderSettings object from a Config object.
Definition CacheLoaderSettings.cpp:51
Settings for the cache loader.
Definition CacheLoaderSettings.hpp:31
bool isDisabled() const
Definition CacheLoaderSettings.cpp:45
bool isSync() const
Definition CacheLoaderSettings.cpp:33
size_t numCacheMarkers
Definition CacheLoaderSettings.hpp:36
size_t numCacheCursorsFromAccount
Definition CacheLoaderSettings.hpp:40
size_t cachePageFetchSize
Definition CacheLoaderSettings.hpp:37
size_t numCacheDiffs
Definition CacheLoaderSettings.hpp:35
size_t numCacheCursorsFromDiff
Definition CacheLoaderSettings.hpp:39