22#include "data/BackendInterface.hpp"
25#include "util/log/Logger.hpp"
27#include <grpcpp/grpcpp.h>
28#include <xrpl/proto/org/xrpl/rpc/v1/xrp_ledger.grpc.pb.h>
43 std::shared_ptr<BackendInterface> backend_;
44 std::shared_ptr<etlng::LoadBalancerInterface> loadBalancer_;
50 LedgerFetcher(std::shared_ptr<BackendInterface> backend, std::shared_ptr<etlng::LoadBalancerInterface> balancer)
51 : backend_(std::move(backend)), loadBalancer_(std::move(balancer))
64 [[nodiscard]] OptionalGetLedgerResponseType
67 LOG(log_.
debug()) <<
"Attempting to fetch ledger with sequence = " << sequence;
69 auto response = loadBalancer_->fetchLedger(sequence,
false,
false);
71 LOG(log_.
trace()) <<
"GetLedger reply = " << response->DebugString();
84 [[nodiscard]] OptionalGetLedgerResponseType
87 LOG(log_.
debug()) <<
"Attempting to fetch ledger with sequence = " << sequence;
89 auto const isCacheFull = backend_->cache().isFull();
90 auto const isLedgerCached = backend_->cache().latestLedgerSequence() >= sequence;
92 LOG(log_.
info()) << sequence <<
" is already cached, the current latest seq in cache is "
93 << backend_->cache().latestLedgerSequence() <<
" and the cache is "
94 << (isCacheFull ?
"full" :
"not full");
97 auto response = loadBalancer_->fetchLedger(sequence,
true, !isCacheFull || isLedgerCached);
99 LOG(log_.
trace()) <<
"GetLedger reply = " << response->DebugString();
GRPC Ledger data fetcher.
Definition LedgerFetcher.hpp:39
OptionalGetLedgerResponseType fetchData(uint32_t sequence) override
Extract data for a particular ledger from an ETL source.
Definition LedgerFetcher.hpp:65
OptionalGetLedgerResponseType fetchDataAndDiff(uint32_t sequence) override
Extract diff data for a particular ledger from an ETL source.
Definition LedgerFetcher.hpp:85
LedgerFetcher(std::shared_ptr< BackendInterface > backend, std::shared_ptr< etlng::LoadBalancerInterface > balancer)
Create an instance of the fetcher.
Definition LedgerFetcher.hpp:50
A simple thread-safe logger for the channel specified in the constructor.
Definition Logger.hpp:111
Pump debug(SourceLocationType const &loc=CURRENT_SRC_LOCATION) const
Interface for logging at Severity::DBG severity.
Definition Logger.cpp:214
Pump trace(SourceLocationType const &loc=CURRENT_SRC_LOCATION) const
Interface for logging at Severity::TRC severity.
Definition Logger.cpp:209
Pump info(SourceLocationType const &loc=CURRENT_SRC_LOCATION) const
Interface for logging at Severity::NFO severity.
Definition Logger.cpp:219
An interface for LedgerFetcher.
Definition LedgerFetcherInterface.hpp:34