3#include "data/BackendInterface.hpp"
6#include "util/log/Logger.hpp"
8#include <grpcpp/grpcpp.h>
9#include <xrpl/proto/org/xrpl/rpc/v1/xrp_ledger.grpc.pb.h>
24 std::shared_ptr<BackendInterface> backend_;
25 std::shared_ptr<LoadBalancerInterface> loadBalancer_;
32 std::shared_ptr<BackendInterface> backend,
33 std::shared_ptr<LoadBalancerInterface> balancer
35 : backend_(std::move(backend)), loadBalancer_(std::move(balancer))
49 [[nodiscard]] OptionalGetLedgerResponseType
52 LOG(log_.debug()) <<
"Attempting to fetch ledger with sequence = " << sequence;
54 auto response = loadBalancer_->fetchLedger(sequence,
false,
false);
56 LOG(log_.trace()) <<
"GetLedger reply = " << response->DebugString();
70 [[nodiscard]] OptionalGetLedgerResponseType
73 LOG(log_.debug()) <<
"Attempting to fetch ledger with sequence = " << sequence;
75 auto const isCacheFull = backend_->cache().isFull();
76 auto const isLedgerCached = backend_->cache().latestLedgerSequence() >= sequence;
78 LOG(log_.info()) << sequence
79 <<
" is already cached, the current latest seq in cache is "
80 << backend_->cache().latestLedgerSequence() <<
" and the cache is "
81 << (isCacheFull ?
"full" :
"not full");
84 auto response = loadBalancer_->fetchLedger(sequence,
true, !isCacheFull || isLedgerCached);
86 LOG(log_.trace()) <<
"GetLedger reply = " << response->DebugString();
LedgerFetcher(std::shared_ptr< BackendInterface > backend, std::shared_ptr< LoadBalancerInterface > balancer)
Create an instance of the fetcher.
Definition LedgerFetcher.hpp:31
OptionalGetLedgerResponseType fetchData(uint32_t sequence) override
Extract data for a particular ledger from an ETL source.
Definition LedgerFetcher.hpp:50
OptionalGetLedgerResponseType fetchDataAndDiff(uint32_t sequence) override
Extract diff data for a particular ledger from an ETL source.
Definition LedgerFetcher.hpp:71
A simple thread-safe logger for the channel specified in the constructor.
Definition Logger.hpp:78
An interface for LedgerFetcher.
Definition LedgerFetcherInterface.hpp:15