23#include "etl/ETLState.hpp"
24#include "etlng/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}
91 [[nodiscard]]
virtual std::vector<std::string>
92 loadInitialLedger(uint32_t sequence, std::chrono::steady_clock::duration retryAfter = std::chrono::seconds{2}) = 0;
107 [[nodiscard]]
virtual OptionalGetLedgerResponseType
109 uint32_t ledgerSequence,
111 bool getObjectNeighbors,
112 std::chrono::steady_clock::duration retryAfter = std::chrono::seconds{2}
120 [[nodiscard]]
virtual boost::json::value
132 [[nodiscard]]
virtual std::expected<boost::json::object, rpc::CombinedError>
134 boost::json::object
const& request,
135 std::optional<std::string>
const& clientIp,
137 boost::asio::yield_context yield
144 [[nodiscard]]
virtual std::optional<etl::ETLState>
154 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::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 std::vector< std::string > loadInitialLedger(uint32_t sequence, std::chrono::steady_clock::duration retryAfter=std::chrono::seconds{2})=0
Load the initial ledger, writing data to the queue.
virtual void stop(boost::asio::yield_context yield)=0
Stop the load balancer. This will stop all subscription sources.
virtual InitialLedgerLoadResult loadInitialLedger(uint32_t sequence, etlng::InitialLoadObserverInterface &loader, std::chrono::steady_clock::duration retryAfter=std::chrono::seconds{2})=0
Load the initial ledger, writing data to the queue.
virtual boost::json::value toJson() const =0
Represent the state of this load balancer as a JSON object.
virtual std::optional< etl::ETLState > getETLState() noexcept=0
Return state of ETL nodes.
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.
The interface for observing the initial ledger load.
Definition InitialLoadObserverInterface.hpp:36