22#include "etlng/InitialLoadObserverInterface.hpp"
24#include "util/log/Logger.hpp"
26#include <boost/asio/spawn.hpp>
27#include <grpcpp/support/status.h>
28#include <org/xrpl/rpc/v1/get_ledger.pb.h>
29#include <xrpl/proto/org/xrpl/rpc/v1/xrp_ledger.grpc.pb.h>
38namespace etlng::impl {
42 std::unique_ptr<org::xrpl::rpc::v1::XRPLedgerAPIService::Stub> stub_;
43 std::unique_ptr<std::atomic_bool> initialLoadShouldStop_;
44 std::chrono::system_clock::duration deadline_;
46 static constexpr auto kKEEPALIVE_PING_INTERVAL_MS = 10000;
47 static constexpr auto kKEEPALIVE_TIMEOUT_MS = 5000;
48 static constexpr auto kKEEPALIVE_PERMIT_WITHOUT_CALLS =
true;
49 static constexpr auto kMAX_PINGS_WITHOUT_DATA = 0;
50 static constexpr auto kDEADLINE = std::chrono::seconds(30);
54 std::string
const& ip,
55 std::string
const& grpcPort,
56 std::chrono::system_clock::duration deadline = kDEADLINE
70 std::pair<grpc::Status, org::xrpl::rpc::v1::GetLedgerResponse>
71 fetchLedger(uint32_t sequence,
bool getObjects =
true,
bool getObjectNeighbors =
false);
90 stop(boost::asio::yield_context yield);
std::expected< std::vector< std::string >, InitialLedgerLoadError > InitialLedgerLoadResult
The result type of the initial ledger load.
Definition LoadBalancerInterface.hpp:54
std::pair< grpc::Status, org::xrpl::rpc::v1::GetLedgerResponse > fetchLedger(uint32_t sequence, bool getObjects=true, bool getObjectNeighbors=false)
Fetch data for a specific ledger.
Definition GrpcSource.cpp:92
InitialLedgerLoadResult loadInitialLedger(uint32_t sequence, uint32_t numMarkers, etlng::InitialLoadObserverInterface &observer)
Download a ledger in full.
Definition GrpcSource.cpp:121
void stop(boost::asio::yield_context yield)
Stop any ongoing operations.
Definition GrpcSource.cpp:178
A simple thread-safe logger for the channel specified in the constructor.
Definition Logger.hpp:94
The interface for observing the initial ledger load.
Definition InitialLoadObserverInterface.hpp:36