mirror of
https://github.com/XRPLF/clio.git
synced 2025-11-04 20:05:51 +00:00
79 lines
2.9 KiB
C++
79 lines
2.9 KiB
C++
//------------------------------------------------------------------------------
|
|
/*
|
|
This file is part of clio: https://github.com/XRPLF/clio
|
|
Copyright (c) 2024, the clio developers.
|
|
|
|
Permission to use, copy, modify, and distribute this software for any
|
|
purpose with or without fee is hereby granted, provided that the above
|
|
copyright notice and this permission notice appear in all copies.
|
|
|
|
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
|
|
WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
|
|
MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
|
|
ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
|
WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
|
|
ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
|
|
OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
|
*/
|
|
//==============================================================================
|
|
|
|
#include "etl/CacheLoaderSettings.hpp"
|
|
|
|
#include "util/config/Config.hpp"
|
|
|
|
#include <boost/algorithm/string/predicate.hpp>
|
|
|
|
#include <cstddef>
|
|
#include <string>
|
|
|
|
namespace etl {
|
|
|
|
[[nodiscard]] bool
|
|
CacheLoaderSettings::isSync() const
|
|
{
|
|
return loadStyle == LoadStyle::SYNC;
|
|
}
|
|
|
|
[[nodiscard]] bool
|
|
CacheLoaderSettings::isAsync() const
|
|
{
|
|
return loadStyle == LoadStyle::ASYNC;
|
|
}
|
|
|
|
[[nodiscard]] bool
|
|
CacheLoaderSettings::isDisabled() const
|
|
{
|
|
return loadStyle == LoadStyle::NONE;
|
|
}
|
|
|
|
[[nodiscard]] CacheLoaderSettings
|
|
make_CacheLoaderSettings(util::Config const& config)
|
|
{
|
|
CacheLoaderSettings settings;
|
|
settings.numThreads = config.valueOr("io_threads", settings.numThreads);
|
|
if (config.contains("cache")) {
|
|
auto const cache = config.section("cache");
|
|
// Given diff number to generate cursors
|
|
settings.numCacheDiffs = cache.valueOr<size_t>("num_diffs", settings.numCacheDiffs);
|
|
// Given cursors number fetching from diff
|
|
settings.numCacheCursorsFromDiff = cache.valueOr<size_t>("num_cursors_from_diff", 0);
|
|
// Given cursors number fetching from account
|
|
settings.numCacheCursorsFromAccount = cache.valueOr<size_t>("num_cursors_from_account", 0);
|
|
|
|
settings.numCacheMarkers = cache.valueOr<size_t>("num_markers", settings.numCacheMarkers);
|
|
settings.cachePageFetchSize = cache.valueOr<size_t>("page_fetch_size", settings.cachePageFetchSize);
|
|
|
|
if (auto entry = cache.maybeValue<std::string>("load"); entry) {
|
|
if (boost::iequals(*entry, "sync"))
|
|
settings.loadStyle = CacheLoaderSettings::LoadStyle::SYNC;
|
|
if (boost::iequals(*entry, "async"))
|
|
settings.loadStyle = CacheLoaderSettings::LoadStyle::ASYNC;
|
|
if (boost::iequals(*entry, "none") or boost::iequals(*entry, "no"))
|
|
settings.loadStyle = CacheLoaderSettings::LoadStyle::NONE;
|
|
}
|
|
}
|
|
return settings;
|
|
}
|
|
|
|
} // namespace etl
|