mirror of
https://github.com/XRPLF/clio.git
synced 2025-11-20 11:45:53 +00:00
fixes #1805 --------- Co-authored-by: Ayaz Salikhov <mathbunnyru@users.noreply.github.com> Co-authored-by: Maria Shodunke <maria-robobug@users.noreply.github.com> Co-authored-by: Sergey Kuznetsov <skuznetsov@ripple.com>
78 lines
2.7 KiB
C++
78 lines
2.7 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/ConfigDefinition.hpp"
|
|
|
|
#include <boost/algorithm/string/predicate.hpp>
|
|
|
|
#include <cstddef>
|
|
#include <cstdint>
|
|
#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
|
|
makeCacheLoaderSettings(util::config::ClioConfigDefinition const& config)
|
|
{
|
|
CacheLoaderSettings settings;
|
|
settings.numThreads = config.get<uint16_t>("io_threads");
|
|
auto const cache = config.getObject("cache");
|
|
// Given diff number to generate cursors
|
|
settings.numCacheDiffs = cache.get<std::size_t>("num_diffs");
|
|
// Given cursors number fetching from diff
|
|
settings.numCacheCursorsFromDiff = cache.get<std::size_t>("num_cursors_from_diff");
|
|
// Given cursors number fetching from account
|
|
settings.numCacheCursorsFromAccount = cache.get<std::size_t>("num_cursors_from_account");
|
|
|
|
settings.numCacheMarkers = cache.get<std::size_t>("num_markers");
|
|
settings.cachePageFetchSize = cache.get<std::size_t>("page_fetch_size");
|
|
|
|
auto const entry = cache.get<std::string>("load");
|
|
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
|