23#include "etl/ETLState.hpp"
24#include "etl/InitialLoadObserverInterface.hpp"
27#include <boost/asio/spawn.hpp>
28#include <boost/json/object.hpp>
29#include <boost/json/value.hpp>
30#include <org/xrpl/rpc/v1/ledger.pb.h>
31#include <xrpl/proto/org/xrpl/rpc/v1/get_ledger.pb.h>
61 using RawLedgerObjectType = org::xrpl::rpc::v1::RawLedgerObject;
62 using GetLedgerResponseType = org::xrpl::rpc::v1::GetLedgerResponse;
63 using OptionalGetLedgerResponseType = std::optional<GetLedgerResponseType>;
80 std::chrono::steady_clock::duration retryAfter = std::chrono::seconds{2}
96 [[nodiscard]]
virtual OptionalGetLedgerResponseType
98 uint32_t ledgerSequence,
100 bool getObjectNeighbors,
101 std::chrono::steady_clock::duration retryAfter = std::chrono::seconds{2}
109 [[nodiscard]]
virtual boost::json::value
121 [[nodiscard]]
virtual std::expected<boost::json::object, rpc::CombinedError>
123 boost::json::object
const& request,
124 std::optional<std::string>
const& clientIp,
126 boost::asio::yield_context yield
133 [[nodiscard]]
virtual std::optional<ETLState>
143 stop(boost::asio::yield_context yield) = 0;
InitialLedgerLoadError
Represents possible errors for initial ledger load.
Definition LoadBalancerInterface.hpp:45
std::expected< std::vector< std::string >, InitialLedgerLoadError > InitialLedgerLoadResult
The result type of the initial ledger load.
Definition LoadBalancerInterface.hpp:54
An interface for LoadBalancer.
Definition LoadBalancerInterface.hpp:59
virtual std::optional< ETLState > getETLState() noexcept=0
Return state of ETL nodes.
virtual InitialLedgerLoadResult loadInitialLedger(uint32_t sequence, InitialLoadObserverInterface &loader, std::chrono::steady_clock::duration retryAfter=std::chrono::seconds{2})=0
Load the initial ledger, writing data to the queue.
virtual OptionalGetLedgerResponseType fetchLedger(uint32_t ledgerSequence, bool getObjects, bool getObjectNeighbors, std::chrono::steady_clock::duration retryAfter=std::chrono::seconds{2})=0
Fetch data for a specific ledger.
virtual boost::json::value toJson() const =0
Represent the state of this load balancer as a JSON object.
virtual std::expected< boost::json::object, rpc::CombinedError > forwardToRippled(boost::json::object const &request, std::optional< std::string > const &clientIp, bool isAdmin, boost::asio::yield_context yield)=0
Forward a JSON RPC request to a randomly selected rippled node.
virtual void stop(boost::asio::yield_context yield)=0
Stop the load balancer. This will stop all subscription sources.
The interface for observing the initial ledger load.
Definition InitialLoadObserverInterface.hpp:36