Clio  develop
The XRP Ledger API server.
Loading...
Searching...
No Matches
ForwardingSource.hpp
1#pragma once
2
3#include "rpc/Errors.hpp"
4#include "util/log/Logger.hpp"
5#include "util/requests/WsConnection.hpp"
6
7#include <boost/asio/spawn.hpp>
8#include <boost/json/object.hpp>
9
10#include <chrono>
11#include <expected>
12#include <optional>
13#include <string>
14#include <string_view>
15
16namespace etl::impl {
17
18class ForwardingSource {
19 util::Logger log_;
20 util::requests::WsConnectionBuilder connectionBuilder_;
21 std::chrono::steady_clock::duration forwardingTimeout_;
22
23 static constexpr std::chrono::seconds kCONNECTION_TIMEOUT{3};
24
25public:
26 ForwardingSource(
27 std::string ip,
28 std::string wsPort,
29 std::chrono::steady_clock::duration forwardingTimeout,
30 std::chrono::steady_clock::duration connTimeout = ForwardingSource::kCONNECTION_TIMEOUT
31 );
32
42 std::expected<boost::json::object, rpc::ClioError>
44 boost::json::object const& request,
45 std::optional<std::string> const& forwardToRippledClientIp,
46 std::string_view xUserValue,
47 boost::asio::yield_context yield
48 ) const;
49};
50
51} // namespace etl::impl
std::expected< boost::json::object, rpc::ClioError > forwardToRippled(boost::json::object const &request, std::optional< std::string > const &forwardToRippledClientIp, std::string_view xUserValue, boost::asio::yield_context yield) const
Forward a request to rippled.
Definition ForwardingSource.cpp:42
A simple thread-safe logger for the channel specified in the constructor.
Definition Logger.hpp:77
Builder for WebSocket connections.
Definition WsConnection.hpp:84