diff --git a/AMMTest_8cpp_source.html b/AMMTest_8cpp_source.html
index a6ae19839c..bb2c7741ee 100644
--- a/AMMTest_8cpp_source.html
+++ b/AMMTest_8cpp_source.html
@@ -377,7 +377,7 @@ $(function() {
Convenience class to test AMM functionality.
-std::unique_ptr< Config > envconfig()
creates and initializes a default configuration for jtx::Env
+std::unique_ptr< Config > envconfig()
creates and initializes a default configuration for jtx::Env
std::optional< STObject > object
The STObject if the parse was successful.
void trust(STAmount const &amount, Account const &account)
Establish trust lines.
diff --git a/AMM__test_8cpp_source.html b/AMM__test_8cpp_source.html
index 4fc29fc9fe..754f9ef696 100644
--- a/AMM__test_8cpp_source.html
+++ b/AMM__test_8cpp_source.html
@@ -4941,7 +4941,7 @@ $(function() {
Floating point representation of amounts with high dynamic range.
Convenience class to test AMM functionality.
-std::unique_ptr< Config > envconfig()
creates and initializes a default configuration for jtx::Env
+std::unique_ptr< Config > envconfig()
creates and initializes a default configuration for jtx::Env
void trust(STAmount const &amount, Account const &account)
Establish trust lines.
diff --git a/AccountObjects__test_8cpp_source.html b/AccountObjects__test_8cpp_source.html
index 9d2ae2eda9..d6edfd57f5 100644
--- a/AccountObjects__test_8cpp_source.html
+++ b/AccountObjects__test_8cpp_source.html
@@ -1136,14 +1136,14 @@ $(function() {
const std::string fieldName
-std::unique_ptr< Config > port_increment(std::unique_ptr< Config >, int)
adjust the default configured server ports by a specified value
+std::unique_ptr< Config > port_increment(std::unique_ptr< Config >, int)
adjust the default configured server ports by a specified value
std::string const & human() const
Returns the human readable public key.
const SF_UINT32 sfTicketSequence
constexpr std::uint32_t tfPassive
Convenience class to test AMM functionality.
Unserialize a JSON document into a Value.
-std::unique_ptr< Config > envconfig()
creates and initializes a default configuration for jtx::Env
+std::unique_ptr< Config > envconfig()
creates and initializes a default configuration for jtx::Env
Json::StaticString const & getJsonName() const
Json::Value create_account_attestation(jtx::Account const &submittingAccount, Json::Value const &jvBridge, jtx::Account const &sendingAccount, jtx::AnyAmount const &sendingAmount, jtx::AnyAmount const &rewardAmount, jtx::Account const &rewardAccount, bool wasLockingChainSend, std::uint64_t createCount, jtx::Account const &dst, jtx::signer const &signer)
const SF_UINT64 sfXChainAccountClaimCount
diff --git a/AccountOffers__test_8cpp_source.html b/AccountOffers__test_8cpp_source.html
index e618fbe8c8..c8b70d0618 100644
--- a/AccountOffers__test_8cpp_source.html
+++ b/AccountOffers__test_8cpp_source.html
@@ -410,10 +410,10 @@ $(function() {
const std::string fieldName
std::string const & human() const
Returns the human readable public key.
std::string toStyledString() const
-std::unique_ptr< Config > envconfig()
creates and initializes a default configuration for jtx::Env
+std::unique_ptr< Config > envconfig()
creates and initializes a default configuration for jtx::Env
void trust(STAmount const &amount, Account const &account)
Establish trust lines.
const SF_UINT32 sfExpiration
-std::unique_ptr< Config > no_admin(std::unique_ptr< Config >)
adjust config so no admin ports are enabled
+std::unique_ptr< Config > no_admin(std::unique_ptr< Config >)
adjust config so no admin ports are enabled
void testSequential(bool asAdmin)
static bool checkMarker(Json::Value const &val)
diff --git a/AmendmentTable__test_8cpp_source.html b/AmendmentTable__test_8cpp_source.html
index 56847bd99a..ce9874cb46 100644
--- a/AmendmentTable__test_8cpp_source.html
+++ b/AmendmentTable__test_8cpp_source.html
@@ -1394,7 +1394,7 @@ $(function() {
void testNoOnUnknown(FeatureBitset const &feat)
void testHasUnsupported()
-std::unique_ptr< Config > envconfig()
creates and initializes a default configuration for jtx::Env
+std::unique_ptr< Config > envconfig()
creates and initializes a default configuration for jtx::Env
diff --git a/Application_8cpp_source.html b/Application_8cpp_source.html
index 71c6d6ef64..c58c4e9747 100644
--- a/Application_8cpp_source.html
+++ b/Application_8cpp_source.html
@@ -2575,7 +2575,7 @@ $(function() {
RPC::ShardArchiveHandler * getShardArchiveHandler(bool tryRecovery) override
std::unique_ptr< InboundLedgers > m_inboundLedgers
std::unique_ptr< PeerReservationTable > peerReservations_
-ServerHandler::Setup setup_ServerHandler(Config const &config, std::ostream &&log)
+ServerHandler::Setup setup_ServerHandler(Config const &config, std::ostream &&log)
std::shared_ptr< Ledger > loadLedgerFromFile(std::string const &ledgerID)
bool checkSigs() const override
beast::Journal journal(std::string const &name) override
@@ -2594,7 +2594,7 @@ $(function() {
std::unique_ptr< JobQueue > m_jobQueue
std::atomic< bool > checkSigs_
-std::unique_ptr< ServerHandler > make_ServerHandler(Application &app, boost::asio::io_service &io_service, JobQueue &jobQueue, NetworkOPs &networkOPs, Resource::Manager &resourceManager, CollectorManager &cm)
+std::unique_ptr< ServerHandler > make_ServerHandler(Application &app, boost::asio::io_service &io_service, JobQueue &jobQueue, NetworkOPs &networkOPs, Resource::Manager &resourceManager, CollectorManager &cm)
std::enable_if_t< std::is_integral< Integral >::value &&detail::is_engine< Engine >::value, Integral > rand_int(Engine &engine, Integral min, Integral max)
Return a uniformly distributed random integer.
std::shared_ptr< Ledger > loadByHash(uint256 const &ledgerHash, Application &app, bool acquire)
virtual std::size_t cacheSize()=0
diff --git a/Book__test_8cpp_source.html b/Book__test_8cpp_source.html
index 43e6bc9f14..b810d5a2f6 100644
--- a/Book__test_8cpp_source.html
+++ b/Book__test_8cpp_source.html
@@ -1833,7 +1833,7 @@ $(function() {
uint256 getQualityNext(uint256 const &uBase)
-std::unique_ptr< Config > envconfig()
creates and initializes a default configuration for jtx::Env
+std::unique_ptr< Config > envconfig()
creates and initializes a default configuration for jtx::Env
static constexpr LimitRange bookOffers
Limits for the book_offers command.
void testCrossingSingleBookOffer()
void testOneSideOffersInBook()
@@ -1841,7 +1841,7 @@ $(function() {
BEAST_DEFINE_TESTSUITE_PRIO(AccountDelete, app, ripple, 2)
void testBookOfferErrors()
-std::unique_ptr< Config > no_admin(std::unique_ptr< Config >)
adjust config so no admin ports are enabled
+std::unique_ptr< Config > no_admin(std::unique_ptr< Config >)
adjust config so no admin ports are enabled
Value & append(const Value &value)
Append value to array at the end.
@ objectValue
object value (collection of name/value pairs).
diff --git a/ClosureCounter__test_8cpp_source.html b/ClosureCounter__test_8cpp_source.html
index 6c03957049..55c348aeb7 100644
--- a/ClosureCounter__test_8cpp_source.html
+++ b/ClosureCounter__test_8cpp_source.html
@@ -425,7 +425,7 @@ $(function() {
-std::unique_ptr< Config > envconfig()
creates and initializes a default configuration for jtx::Env
+std::unique_ptr< Config > envconfig()
creates and initializes a default configuration for jtx::Env
TrackedString(TrackedString const &rhs)
friend TrackedString operator+(TrackedString const &s, char const *rhs)
diff --git a/ConfigSections_8h_source.html b/ConfigSections_8h_source.html
index 78361378ee..abba3acdd5 100644
--- a/ConfigSections_8h_source.html
+++ b/ConfigSections_8h_source.html
@@ -120,61 +120,62 @@ $(function() {
50 #define SECTION_AMENDMENTS "amendments"
51 #define SECTION_AMENDMENT_MAJORITY_TIME "amendment_majority_time"
- 52 #define SECTION_CLUSTER_NODES "cluster_nodes"
- 53 #define SECTION_COMPRESSION "compression"
- 54 #define SECTION_DEBUG_LOGFILE "debug_logfile"
- 55 #define SECTION_ELB_SUPPORT "elb_support"
- 56 #define SECTION_FEE_DEFAULT "fee_default"
- 57 #define SECTION_FETCH_DEPTH "fetch_depth"
- 58 #define SECTION_HISTORICAL_SHARD_PATHS "historical_shard_paths"
- 59 #define SECTION_INSIGHT "insight"
- 60 #define SECTION_IPS "ips"
- 61 #define SECTION_IPS_FIXED "ips_fixed"
- 62 #define SECTION_LEDGER_HISTORY "ledger_history"
- 63 #define SECTION_MAX_TRANSACTIONS "max_transactions"
- 64 #define SECTION_NETWORK_QUORUM "network_quorum"
- 65 #define SECTION_NODE_SEED "node_seed"
- 66 #define SECTION_NODE_SIZE "node_size"
- 67 #define SECTION_OVERLAY "overlay"
- 68 #define SECTION_PATH_SEARCH_OLD "path_search_old"
- 69 #define SECTION_PATH_SEARCH "path_search"
- 70 #define SECTION_PATH_SEARCH_FAST "path_search_fast"
- 71 #define SECTION_PATH_SEARCH_MAX "path_search_max"
- 72 #define SECTION_PEER_PRIVATE "peer_private"
- 73 #define SECTION_PEERS_MAX "peers_max"
- 74 #define SECTION_PEERS_IN_MAX "peers_in_max"
- 75 #define SECTION_PEERS_OUT_MAX "peers_out_max"
- 76 #define SECTION_REDUCE_RELAY "reduce_relay"
- 77 #define SECTION_RELATIONAL_DB "relational_db"
- 78 #define SECTION_RELAY_PROPOSALS "relay_proposals"
- 79 #define SECTION_RELAY_VALIDATIONS "relay_validations"
- 80 #define SECTION_RPC_STARTUP "rpc_startup"
- 81 #define SECTION_SIGNING_SUPPORT "signing_support"
- 82 #define SECTION_SNTP "sntp_servers"
- 83 #define SECTION_SSL_VERIFY "ssl_verify"
- 84 #define SECTION_SSL_VERIFY_FILE "ssl_verify_file"
- 85 #define SECTION_SSL_VERIFY_DIR "ssl_verify_dir"
- 86 #define SECTION_SERVER_DOMAIN "server_domain"
- 87 #define SECTION_VALIDATORS_FILE "validators_file"
- 88 #define SECTION_VALIDATION_SEED "validation_seed"
- 89 #define SECTION_VALIDATOR_KEYS "validator_keys"
- 90 #define SECTION_VALIDATOR_KEY_REVOCATION "validator_key_revocation"
- 91 #define SECTION_VALIDATOR_LIST_KEYS "validator_list_keys"
- 92 #define SECTION_VALIDATOR_LIST_SITES "validator_list_sites"
- 93 #define SECTION_VALIDATORS "validators"
- 94 #define SECTION_VALIDATOR_TOKEN "validator_token"
- 95 #define SECTION_VETO_AMENDMENTS "veto_amendments"
- 96 #define SECTION_WORKERS "workers"
- 97 #define SECTION_IO_WORKERS "io_workers"
- 98 #define SECTION_PREFETCH_WORKERS "prefetch_workers"
- 99 #define SECTION_LEDGER_REPLAY "ledger_replay"
- 100 #define SECTION_BETA_RPC_API "beta_rpc_api"
- 101 #define SECTION_SWEEP_INTERVAL "sweep_interval"
- 102 #define SECTION_NETWORK_ID "network_id"
-
-
-
-
+ 52 #define SECTION_BETA_RPC_API "beta_rpc_api"
+ 53 #define SECTION_CLUSTER_NODES "cluster_nodes"
+ 54 #define SECTION_COMPRESSION "compression"
+ 55 #define SECTION_DEBUG_LOGFILE "debug_logfile"
+ 56 #define SECTION_ELB_SUPPORT "elb_support"
+ 57 #define SECTION_FEE_DEFAULT "fee_default"
+ 58 #define SECTION_FETCH_DEPTH "fetch_depth"
+ 59 #define SECTION_HISTORICAL_SHARD_PATHS "historical_shard_paths"
+ 60 #define SECTION_INSIGHT "insight"
+ 61 #define SECTION_IO_WORKERS "io_workers"
+ 62 #define SECTION_IPS "ips"
+ 63 #define SECTION_IPS_FIXED "ips_fixed"
+ 64 #define SECTION_LEDGER_HISTORY "ledger_history"
+ 65 #define SECTION_LEDGER_REPLAY "ledger_replay"
+ 66 #define SECTION_MAX_TRANSACTIONS "max_transactions"
+ 67 #define SECTION_NETWORK_ID "network_id"
+ 68 #define SECTION_NETWORK_QUORUM "network_quorum"
+ 69 #define SECTION_NODE_SEED "node_seed"
+ 70 #define SECTION_NODE_SIZE "node_size"
+ 71 #define SECTION_OVERLAY "overlay"
+ 72 #define SECTION_PATH_SEARCH_OLD "path_search_old"
+ 73 #define SECTION_PATH_SEARCH "path_search"
+ 74 #define SECTION_PATH_SEARCH_FAST "path_search_fast"
+ 75 #define SECTION_PATH_SEARCH_MAX "path_search_max"
+ 76 #define SECTION_PEER_PRIVATE "peer_private"
+ 77 #define SECTION_PEERS_MAX "peers_max"
+ 78 #define SECTION_PEERS_IN_MAX "peers_in_max"
+ 79 #define SECTION_PEERS_OUT_MAX "peers_out_max"
+ 80 #define SECTION_PORT_GRPC "port_grpc"
+ 81 #define SECTION_PREFETCH_WORKERS "prefetch_workers"
+ 82 #define SECTION_REDUCE_RELAY "reduce_relay"
+ 83 #define SECTION_RELATIONAL_DB "relational_db"
+ 84 #define SECTION_RELAY_PROPOSALS "relay_proposals"
+ 85 #define SECTION_RELAY_VALIDATIONS "relay_validations"
+ 86 #define SECTION_RPC_STARTUP "rpc_startup"
+ 87 #define SECTION_SIGNING_SUPPORT "signing_support"
+ 88 #define SECTION_SNTP "sntp_servers"
+ 89 #define SECTION_SSL_VERIFY "ssl_verify"
+ 90 #define SECTION_SSL_VERIFY_FILE "ssl_verify_file"
+ 91 #define SECTION_SSL_VERIFY_DIR "ssl_verify_dir"
+ 92 #define SECTION_SERVER_DOMAIN "server_domain"
+ 93 #define SECTION_SWEEP_INTERVAL "sweep_interval"
+ 94 #define SECTION_VALIDATORS_FILE "validators_file"
+ 95 #define SECTION_VALIDATION_SEED "validation_seed"
+ 96 #define SECTION_VALIDATOR_KEYS "validator_keys"
+ 97 #define SECTION_VALIDATOR_KEY_REVOCATION "validator_key_revocation"
+ 98 #define SECTION_VALIDATOR_LIST_KEYS "validator_list_keys"
+ 99 #define SECTION_VALIDATOR_LIST_SITES "validator_list_sites"
+ 100 #define SECTION_VALIDATORS "validators"
+ 101 #define SECTION_VALIDATOR_TOKEN "validator_token"
+ 102 #define SECTION_VETO_AMENDMENTS "veto_amendments"
+ 103 #define SECTION_WORKERS "workers"
+
+
+
+
static std::string shardDatabase()
diff --git a/Coroutine__test_8cpp_source.html b/Coroutine__test_8cpp_source.html
index df7b1fcc30..97f14032ba 100644
--- a/Coroutine__test_8cpp_source.html
+++ b/Coroutine__test_8cpp_source.html
@@ -268,7 +268,7 @@ $(function() {
-std::unique_ptr< Config > envconfig()
creates and initializes a default configuration for jtx::Env
+std::unique_ptr< Config > envconfig()
creates and initializes a default configuration for jtx::Env
diff --git a/DatabaseDownloader__test_8cpp_source.html b/DatabaseDownloader__test_8cpp_source.html
index 60639d40e4..e832c535c0 100644
--- a/DatabaseDownloader__test_8cpp_source.html
+++ b/DatabaseDownloader__test_8cpp_source.html
@@ -392,7 +392,7 @@ $(function() {
std::condition_variable cv
-std::unique_ptr< Config > envconfig()
creates and initializes a default configuration for jtx::Env
+std::unique_ptr< Config > envconfig()
creates and initializes a default configuration for jtx::Env
static std::string const & ca_cert()
diff --git a/Database__test_8cpp_source.html b/Database__test_8cpp_source.html
index 59d93609e4..ad6fcac2a2 100644
--- a/Database__test_8cpp_source.html
+++ b/Database__test_8cpp_source.html
@@ -775,7 +775,7 @@ $(function() {
void testNodeStore(std::string const &type, bool const testPersistence, std::int64_t const seedValue, int numObjsToTest=2000)
void testImport(std::string const &destBackendType, std::string const &srcBackendType, std::int64_t seedValue)
-std::unique_ptr< Config > envconfig()
creates and initializes a default configuration for jtx::Env
+std::unique_ptr< Config > envconfig()
creates and initializes a default configuration for jtx::Env
diff --git a/DepositAuthorized__test_8cpp_source.html b/DepositAuthorized__test_8cpp_source.html
index bddefc1db4..a27cd11230 100644
--- a/DepositAuthorized__test_8cpp_source.html
+++ b/DepositAuthorized__test_8cpp_source.html
@@ -366,7 +366,7 @@ $(function() {
Json::Value rpc(unsigned apiVersion, std::unordered_map< std::string, std::string > const &headers, std::string const &cmd, Args &&... args)
Execute an RPC command.
std::string const & human() const
Returns the human readable public key.
@ objectValue
object value (collection of name/value pairs).
-static bool authorized(Port const &port, std::map< std::string, std::string > const &h)
+static bool authorized(Port const &port, std::map< std::string, std::string > const &h)
Json::Value fset(Account const &account, std::uint32_t on, std::uint32_t off=0)
Add and/or remove flag.
diff --git a/Env_8h_source.html b/Env_8h_source.html
index 39c5f4e4b8..c7926bd1f5 100644
--- a/Env_8h_source.html
+++ b/Env_8h_source.html
@@ -671,7 +671,7 @@ $(function() {
void forAllApiVersions(VersionedTestCallable auto... testCallable)
PrettyAmount balance(Account const &account) const
Returns the XRP balance on an account.
-std::unique_ptr< Config > envconfig()
creates and initializes a default configuration for jtx::Env
+std::unique_ptr< Config > envconfig()
creates and initializes a default configuration for jtx::Env
constexpr unsigned int apiCommandLineVersion
virtual OpenLedger & openLedger()=0
diff --git a/Env__test_8cpp_source.html b/Env__test_8cpp_source.html
index a642bda18d..b9e96e9923 100644
--- a/Env__test_8cpp_source.html
+++ b/Env__test_8cpp_source.html
@@ -1033,7 +1033,7 @@ $(function() {
PrettyAmount balance(Account const &account) const
Returns the XRP balance on an account.
-std::unique_ptr< Config > envconfig()
creates and initializes a default configuration for jtx::Env
+std::unique_ptr< Config > envconfig()
creates and initializes a default configuration for jtx::Env
Set a multisignature on a JTx.
diff --git a/GRPCServer_8cpp_source.html b/GRPCServer_8cpp_source.html
index 71240d75ca..01a2c3839c 100644
--- a/GRPCServer_8cpp_source.html
+++ b/GRPCServer_8cpp_source.html
@@ -94,702 +94,704 @@ $(function() {
23 #include <ripple/resource/Fees.h>
25 #include <ripple/beast/net/IPAddressConversion.h>
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 43 peerClean = peer.
substr(first + 1);
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 59 template <
class Request,
class Response>
-
- 61 org::xrpl::rpc::v1::XRPLedgerAPIService::AsyncService& service,
- 62 grpc::ServerCompletionQueue& cq,
-
-
-
-
-
-
-
-
-
-
-
-
- 75 , bindListener_(
std::move(bindListener))
- 76 , handler_(
std::move(handler))
- 77 , forward_(
std::move(forward))
- 78 , requiredCondition_(
std::move(requiredCondition))
- 79 , loadType_(
std::move(loadType))
- 80 , secureGatewayIPs_(secureGatewayIPs)
-
-
-
-
-
-
- 87 template <
class Request,
class Response>
-
-
-
- 91 return std::make_shared<CallData<Request, Response>>(
-
-
-
-
-
-
-
-
-
-
-
- 103 template <
class Request,
class Response>
-
-
-
-
- 108 BOOST_ASSERT(!finished_);
-
-
- 111 this->shared_from_this();
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 126 thisShared->process(coro);
-
-
-
-
-
-
- 133 grpc::StatusCode::INTERNAL,
"Job Queue is already stopped"};
- 134 responder_.FinishWithError(status,
this);
-
-
-
- 138 template <
class Request,
class Response>
-
-
-
-
-
-
- 145 auto usage = getUsage();
-
-
-
-
- 150 grpc::StatusCode::RESOURCE_EXHAUSTED,
- 151 "usage balance exceeds threshold"};
- 152 responder_.FinishWithError(status,
this);
-
-
-
- 156 auto loadType = getLoadType();
- 157 usage.charge(loadType);
-
-
-
-
- 162 toLog <<
"role = " << (int)role;
-
- 164 toLog <<
" address = ";
- 165 if (
auto clientIp = getClientIpAddress())
- 166 toLog << clientIp.value();
-
-
- 169 if (
auto user = getUser())
- 170 toLog << user.value();
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 203 grpc::StatusCode::FAILED_PRECONDITION,
-
- 205 responder_.FinishWithError(status,
this);
-
-
-
-
-
-
-
-
- 214 responder_.Finish(result.
first, result.
second,
this);
-
-
-
-
-
-
-
-
-
-
-
- 226 grpc::Status status{grpc::StatusCode::INTERNAL, ex.
what()};
- 227 responder_.FinishWithError(status,
this);
-
-
-
- 231 template <
class Request,
class Response>
-
-
-
-
- 236 if (
auto descriptor =
- 237 Request::GetDescriptor()->FindFieldByName(
"client_ip"))
-
- 239 Request::GetReflection()->SetString(&request_, descriptor, ctx_.peer());
-
- 241 <<
"Set client_ip to " << ctx_.peer();
-
-
-
-
- 246 Throw<std::runtime_error>(
- 247 "Attempting to forward but no client_ip field in "
-
-
-
-
-
- 253 grpc::ClientContext clientContext;
-
- 255 auto status = forward_(stub.get(), &clientContext, request_, &response);
- 256 responder_.Finish(response, status,
this);
-
-
-
-
-
- 262 <<
"Failed to forward request to tx";
-
- 264 grpc::StatusCode::INTERNAL,
- 265 "Attempted to act as proxy but failed "
- 266 "to create forwarding stub"};
- 267 responder_.FinishWithError(status,
this);
-
-
-
- 271 template <
class Request,
class Response>
-
-
-
-
-
-
- 278 template <
class Request,
class Response>
-
-
-
-
-
-
- 285 template <
class Request,
class Response>
-
-
-
-
-
- 291 else if (wasForwarded())
-
-
-
-
-
- 297 template <
class Request,
class Response>
-
-
-
- 301 if (
auto descriptor =
- 302 Request::GetDescriptor()->FindFieldByName(
"client_ip"))
-
-
- 305 Request::GetReflection()->GetString(request_, descriptor);
- 306 if (!clientIp.
empty())
-
-
-
-
-
-
-
- 314 template <
class Request,
class Response>
-
-
-
- 318 if (
auto descriptor = Request::GetDescriptor()->FindFieldByName(
"user"))
-
-
- 321 Request::GetReflection()->GetString(request_, descriptor);
-
-
-
-
-
-
-
-
- 330 template <
class Request,
class Response>
-
-
-
- 334 auto endpoint = getClientEndpoint();
-
- 336 return endpoint->address();
-
-
-
- 340 template <
class Request,
class Response>
-
-
-
- 344 auto endpoint = getProxiedClientEndpoint();
-
- 346 return endpoint->address();
-
-
-
- 350 template <
class Request,
class Response>
-
-
-
- 354 auto descriptor = Request::GetDescriptor()->FindFieldByName(
"client_ip");
-
-
-
- 358 Request::GetReflection()->GetString(request_, descriptor);
- 359 if (!clientIp.
empty())
-
-
- 362 <<
"Got client_ip from request : " << clientIp;
- 363 return getEndpoint(clientIp);
-
-
-
-
-
- 369 template <
class Request,
class Response>
-
-
-
- 373 return getEndpoint(ctx_.peer());
-
-
- 376 template <
class Request,
class Response>
-
-
-
-
-
- 382 auto clientIp = getClientIpAddress();
- 383 auto proxiedIp = getProxiedClientIpAddress();
- 384 if (clientIp && !proxiedIp)
-
-
-
-
-
-
-
-
-
-
- 395 template <
class Request,
class Response>
-
-
-
-
-
-
-
- 403 if (
auto descriptor =
- 404 Response::GetDescriptor()->FindFieldByName(
"is_unlimited"))
-
- 406 Response::GetReflection()->SetBool(&response, descriptor,
true);
-
-
-
-
- 411 template <
class Request,
class Response>
-
-
-
- 415 auto endpoint = getClientEndpoint();
- 416 auto proxiedEndpoint = getProxiedClientEndpoint();
-
-
-
-
-
-
- 423 Throw<std::runtime_error>(
"Failed to get client endpoint");
-
-
-
-
-
-
-
-
-
-
- 434 auto const optIp = section.
get(
"ip");
-
-
-
- 438 auto const optPort = section.get(
"port");
-
-
-
-
- 443 boost::asio::ip::tcp::endpoint endpoint(
- 444 boost::asio::ip::make_address(*optIp),
std::stoi(*optPort));
-
-
-
-
-
-
-
- 452 JLOG(
journal_.
error()) <<
"Error setting grpc server address";
- 453 Throw<std::runtime_error>(
"Error setting grpc server address");
-
-
- 456 auto const optSecureGateway = section.get(
"secure_gateway");
- 457 if (optSecureGateway)
-
-
-
-
-
-
-
- 465 boost::algorithm::trim(ip);
- 466 auto const addr = boost::asio::ip::make_address(ip);
-
- 468 if (addr.is_unspecified())
-
-
- 471 <<
"Can't pass unspecified IP in "
- 472 <<
"secure_gateway section of port_grpc";
- 473 Throw<std::runtime_error>(
- 474 "Unspecified IP in secure_gateway section");
-
-
-
-
-
-
-
-
- 483 <<
"Error parsing secure gateway IPs for grpc server";
- 484 Throw<std::runtime_error>(
- 485 "Error parsing secure_gateway section");
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 510 JLOG(
journal_.
debug()) <<
"Completion Queue has been shutdown";
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 526 return sPtr.get() == ptr;
-
- 528 BOOST_ASSERT(it != requests.
end());
- 529 it->swap(requests.
back());
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 549 while (
cq_->Next(&tag, &ok))
-
-
-
- 553 <<
" ptr = " << ptr <<
" ok = " << ok;
-
-
-
-
- 558 <<
"Destroying object";
-
-
-
-
- 563 if (!ptr->isFinished())
-
- 565 JLOG(
journal_.
debug()) <<
"Received new request. Processing";
-
-
- 568 auto cloned = ptr->clone();
-
-
-
-
-
-
- 575 JLOG(
journal_.
debug()) <<
"Sent response. Destroying object";
-
-
-
-
-
-
-
-
-
-
-
-
-
- 589 auto addToRequests = [&requests](
auto callData) {
-
-
-
-
-
- 595 org::xrpl::rpc::v1::GetLedgerRequest,
- 596 org::xrpl::rpc::v1::GetLedgerResponse>;
-
- 598 addToRequests(std::make_shared<cd>(
-
-
-
- 602 &org::xrpl::rpc::v1::XRPLedgerAPIService::AsyncService::
-
-
- 605 &org::xrpl::rpc::v1::XRPLedgerAPIService::Stub::GetLedger,
-
-
-
-
-
-
- 612 org::xrpl::rpc::v1::GetLedgerDataRequest,
- 613 org::xrpl::rpc::v1::GetLedgerDataResponse>;
-
- 615 addToRequests(std::make_shared<cd>(
-
-
-
- 619 &org::xrpl::rpc::v1::XRPLedgerAPIService::AsyncService::
- 620 RequestGetLedgerData,
-
- 622 &org::xrpl::rpc::v1::XRPLedgerAPIService::Stub::GetLedgerData,
-
-
-
-
-
-
- 629 org::xrpl::rpc::v1::GetLedgerDiffRequest,
- 630 org::xrpl::rpc::v1::GetLedgerDiffResponse>;
-
- 632 addToRequests(std::make_shared<cd>(
-
-
-
- 636 &org::xrpl::rpc::v1::XRPLedgerAPIService::AsyncService::
- 637 RequestGetLedgerDiff,
-
- 639 &org::xrpl::rpc::v1::XRPLedgerAPIService::Stub::GetLedgerDiff,
-
-
-
-
-
-
- 646 org::xrpl::rpc::v1::GetLedgerEntryRequest,
- 647 org::xrpl::rpc::v1::GetLedgerEntryResponse>;
-
- 649 addToRequests(std::make_shared<cd>(
-
-
-
- 653 &org::xrpl::rpc::v1::XRPLedgerAPIService::AsyncService::
- 654 RequestGetLedgerEntry,
-
- 656 &org::xrpl::rpc::v1::XRPLedgerAPIService::Stub::GetLedgerEntry,
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 673 grpc::ServerBuilder builder;
-
- 675 builder.AddListeningPort(
serverAddress_, grpc::InsecureServerCredentials());
-
-
-
-
-
- 681 cq_ = builder.AddCompletionQueue();
-
- 683 server_ = builder.BuildAndStart();
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+ 26 #include <ripple/core/ConfigSections.h>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 44 peerClean = peer.
substr(first + 1);
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 60 template <
class Request,
class Response>
+
+ 62 org::xrpl::rpc::v1::XRPLedgerAPIService::AsyncService& service,
+ 63 grpc::ServerCompletionQueue& cq,
+
+
+
+
+
+
+
+
+
+
+
+
+ 76 , bindListener_(
std::move(bindListener))
+ 77 , handler_(
std::move(handler))
+ 78 , forward_(
std::move(forward))
+ 79 , requiredCondition_(
std::move(requiredCondition))
+ 80 , loadType_(
std::move(loadType))
+ 81 , secureGatewayIPs_(secureGatewayIPs)
+
+
+
+
+
+
+ 88 template <
class Request,
class Response>
+
+
+
+ 92 return std::make_shared<CallData<Request, Response>>(
+
+
+
+
+
+
+
+
+
+
+
+ 104 template <
class Request,
class Response>
+
+
+
+
+ 109 BOOST_ASSERT(!finished_);
+
+
+ 112 this->shared_from_this();
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 127 thisShared->process(coro);
+
+
+
+
+
+
+ 134 grpc::StatusCode::INTERNAL,
"Job Queue is already stopped"};
+ 135 responder_.FinishWithError(status,
this);
+
+
+
+ 139 template <
class Request,
class Response>
+
+
+
+
+
+
+ 146 auto usage = getUsage();
+
+
+
+
+ 151 grpc::StatusCode::RESOURCE_EXHAUSTED,
+ 152 "usage balance exceeds threshold"};
+ 153 responder_.FinishWithError(status,
this);
+
+
+
+ 157 auto loadType = getLoadType();
+ 158 usage.charge(loadType);
+
+
+
+
+ 163 toLog <<
"role = " << (int)role;
+
+ 165 toLog <<
" address = ";
+ 166 if (
auto clientIp = getClientIpAddress())
+ 167 toLog << clientIp.value();
+
+
+ 170 if (
auto user = getUser())
+ 171 toLog << user.value();
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 204 grpc::StatusCode::FAILED_PRECONDITION,
+
+ 206 responder_.FinishWithError(status,
this);
+
+
+
+
+
+
+
+
+ 215 responder_.Finish(result.
first, result.
second,
this);
+
+
+
+
+
+
+
+
+
+
+
+ 227 grpc::Status status{grpc::StatusCode::INTERNAL, ex.
what()};
+ 228 responder_.FinishWithError(status,
this);
+
+
+
+ 232 template <
class Request,
class Response>
+
+
+
+
+ 237 if (
auto descriptor =
+ 238 Request::GetDescriptor()->FindFieldByName(
"client_ip"))
+
+ 240 Request::GetReflection()->SetString(&request_, descriptor, ctx_.peer());
+
+ 242 <<
"Set client_ip to " << ctx_.peer();
+
+
+
+
+ 247 Throw<std::runtime_error>(
+ 248 "Attempting to forward but no client_ip field in "
+
+
+
+
+
+ 254 grpc::ClientContext clientContext;
+
+ 256 auto status = forward_(stub.get(), &clientContext, request_, &response);
+ 257 responder_.Finish(response, status,
this);
+
+
+
+
+
+ 263 <<
"Failed to forward request to tx";
+
+ 265 grpc::StatusCode::INTERNAL,
+ 266 "Attempted to act as proxy but failed "
+ 267 "to create forwarding stub"};
+ 268 responder_.FinishWithError(status,
this);
+
+
+
+ 272 template <
class Request,
class Response>
+
+
+
+
+
+
+ 279 template <
class Request,
class Response>
+
+
+
+
+
+
+ 286 template <
class Request,
class Response>
+
+
+
+
+
+ 292 else if (wasForwarded())
+
+
+
+
+
+ 298 template <
class Request,
class Response>
+
+
+
+ 302 if (
auto descriptor =
+ 303 Request::GetDescriptor()->FindFieldByName(
"client_ip"))
+
+
+ 306 Request::GetReflection()->GetString(request_, descriptor);
+ 307 if (!clientIp.
empty())
+
+
+
+
+
+
+
+ 315 template <
class Request,
class Response>
+
+
+
+ 319 if (
auto descriptor = Request::GetDescriptor()->FindFieldByName(
"user"))
+
+
+ 322 Request::GetReflection()->GetString(request_, descriptor);
+
+
+
+
+
+
+
+
+ 331 template <
class Request,
class Response>
+
+
+
+ 335 auto endpoint = getClientEndpoint();
+
+ 337 return endpoint->address();
+
+
+
+ 341 template <
class Request,
class Response>
+
+
+
+ 345 auto endpoint = getProxiedClientEndpoint();
+
+ 347 return endpoint->address();
+
+
+
+ 351 template <
class Request,
class Response>
+
+
+
+ 355 auto descriptor = Request::GetDescriptor()->FindFieldByName(
"client_ip");
+
+
+
+ 359 Request::GetReflection()->GetString(request_, descriptor);
+ 360 if (!clientIp.
empty())
+
+
+ 363 <<
"Got client_ip from request : " << clientIp;
+ 364 return getEndpoint(clientIp);
+
+
+
+
+
+ 370 template <
class Request,
class Response>
+
+
+
+ 374 return getEndpoint(ctx_.peer());
+
+
+ 377 template <
class Request,
class Response>
+
+
+
+
+
+ 383 auto clientIp = getClientIpAddress();
+ 384 auto proxiedIp = getProxiedClientIpAddress();
+ 385 if (clientIp && !proxiedIp)
+
+
+
+
+
+
+
+
+
+
+ 396 template <
class Request,
class Response>
+
+
+
+
+
+
+
+ 404 if (
auto descriptor =
+ 405 Response::GetDescriptor()->FindFieldByName(
"is_unlimited"))
+
+ 407 Response::GetReflection()->SetBool(&response, descriptor,
true);
+
+
+
+
+ 412 template <
class Request,
class Response>
+
+
+
+ 416 auto endpoint = getClientEndpoint();
+ 417 auto proxiedEndpoint = getProxiedClientEndpoint();
+
+
+
+
+
+
+ 424 Throw<std::runtime_error>(
"Failed to get client endpoint");
+
+
+
+
+
+
+
+
+
+
+ 435 auto const optIp = section.
get(
"ip");
+
+
+
+ 439 auto const optPort = section.
get(
"port");
+
+
+
+
+ 444 boost::asio::ip::tcp::endpoint endpoint(
+ 445 boost::asio::ip::make_address(*optIp),
std::stoi(*optPort));
+
+
+
+
+
+
+
+ 453 JLOG(
journal_.
error()) <<
"Error setting grpc server address";
+ 454 Throw<std::runtime_error>(
"Error setting grpc server address");
+
+
+ 457 auto const optSecureGateway = section.
get(
"secure_gateway");
+ 458 if (optSecureGateway)
+
+
+
+
+
+
+
+ 466 boost::algorithm::trim(ip);
+ 467 auto const addr = boost::asio::ip::make_address(ip);
+
+ 469 if (addr.is_unspecified())
+
+
+ 472 <<
"Can't pass unspecified IP in "
+ 473 <<
"secure_gateway section of port_grpc";
+ 474 Throw<std::runtime_error>(
+ 475 "Unspecified IP in secure_gateway section");
+
+
+
+
+
+
+
+
+ 484 <<
"Error parsing secure gateway IPs for grpc server";
+ 485 Throw<std::runtime_error>(
+ 486 "Error parsing secure_gateway section");
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 511 JLOG(
journal_.
debug()) <<
"Completion Queue has been shutdown";
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 527 return sPtr.get() == ptr;
+
+ 529 BOOST_ASSERT(it != requests.
end());
+ 530 it->swap(requests.
back());
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 550 while (
cq_->Next(&tag, &ok))
+
+
+
+ 554 <<
" ptr = " << ptr <<
" ok = " << ok;
+
+
+
+
+ 559 <<
"Destroying object";
+
+
+
+
+ 564 if (!ptr->isFinished())
+
+ 566 JLOG(
journal_.
debug()) <<
"Received new request. Processing";
+
+
+ 569 auto cloned = ptr->clone();
+
+
+
+
+
+
+ 576 JLOG(
journal_.
debug()) <<
"Sent response. Destroying object";
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 590 auto addToRequests = [&requests](
auto callData) {
+
+
+
+
+
+ 596 org::xrpl::rpc::v1::GetLedgerRequest,
+ 597 org::xrpl::rpc::v1::GetLedgerResponse>;
+
+ 599 addToRequests(std::make_shared<cd>(
+
+
+
+ 603 &org::xrpl::rpc::v1::XRPLedgerAPIService::AsyncService::
+
+
+ 606 &org::xrpl::rpc::v1::XRPLedgerAPIService::Stub::GetLedger,
+
+
+
+
+
+
+ 613 org::xrpl::rpc::v1::GetLedgerDataRequest,
+ 614 org::xrpl::rpc::v1::GetLedgerDataResponse>;
+
+ 616 addToRequests(std::make_shared<cd>(
+
+
+
+ 620 &org::xrpl::rpc::v1::XRPLedgerAPIService::AsyncService::
+ 621 RequestGetLedgerData,
+
+ 623 &org::xrpl::rpc::v1::XRPLedgerAPIService::Stub::GetLedgerData,
+
+
+
+
+
+
+ 630 org::xrpl::rpc::v1::GetLedgerDiffRequest,
+ 631 org::xrpl::rpc::v1::GetLedgerDiffResponse>;
+
+ 633 addToRequests(std::make_shared<cd>(
+
+
+
+ 637 &org::xrpl::rpc::v1::XRPLedgerAPIService::AsyncService::
+ 638 RequestGetLedgerDiff,
+
+ 640 &org::xrpl::rpc::v1::XRPLedgerAPIService::Stub::GetLedgerDiff,
+
+
+
+
+
+
+ 647 org::xrpl::rpc::v1::GetLedgerEntryRequest,
+ 648 org::xrpl::rpc::v1::GetLedgerEntryResponse>;
+
+ 650 addToRequests(std::make_shared<cd>(
+
+
+
+ 654 &org::xrpl::rpc::v1::XRPLedgerAPIService::AsyncService::
+ 655 RequestGetLedgerEntry,
+
+ 657 &org::xrpl::rpc::v1::XRPLedgerAPIService::Stub::GetLedgerEntry,
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 674 grpc::ServerBuilder builder;
+
+ 676 builder.AddListeningPort(
serverAddress_, grpc::InsecureServerCredentials());
+
+
+
+
+
+ 682 cq_ = builder.AddCompletionQueue();
+
+ 684 server_ = builder.BuildAndStart();
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
virtual Consumer newInboundEndpoint(beast::IP::Endpoint const &address)=0
Create a new endpoint keyed by inbound IP address or the forwarded IP if proxied.
+Holds a collection of configuration values.
@@ -798,16 +800,16 @@ $(function() {
Stream trace() const
Severity stream access functions.
-std::shared_ptr< Processor > clone() override
+std::shared_ptr< Processor > clone() override
ErrorInfo const & get_error_info(error_code_i code)
Returns an ErrorInfo that reflects the error code.
const Charge feeMediumBurdenRPC
static constexpr unsigned apiVersion
std::vector< boost::asio::ip::address > secureGatewayIPs_
-
+
-
+
org::xrpl::rpc::v1::XRPLedgerAPIService::AsyncService service_
grpc::ServerCompletionQueue & cq_
@@ -819,12 +821,12 @@ $(function() {
std::pair< org::xrpl::rpc::v1::GetLedgerDiffResponse, grpc::Status > doLedgerDiffGrpc(RPC::GRPCContext< org::xrpl::rpc::v1::GetLedgerDiffRequest > &context)
-
+
constexpr const char * c_str() const
-virtual bool isFinished() override
+virtual bool isFinished() override
virtual NetworkOPs & getOPs()=0
-CallData(org::xrpl::rpc::v1::XRPLedgerAPIService::AsyncService &service, grpc::ServerCompletionQueue &cq, Application &app, BindListener< Request, Response > bindListener, Handler< Request, Response > handler, Forward< Request, Response > forward, RPC::Condition requiredCondition, Resource::Charge loadType, std::vector< boost::asio::ip::address > const &secureGatewayIPs)
+CallData(org::xrpl::rpc::v1::XRPLedgerAPIService::AsyncService &service, grpc::ServerCompletionQueue &cq, Application &app, BindListener< Request, Response > bindListener, Handler< Request, Response > handler, Forward< Request, Response > forward, RPC::Condition requiredCondition, Resource::Charge loadType, std::vector< boost::asio::ip::address > const &secureGatewayIPs)
Json::StaticString message
void erase(STObject &st, TypedField< U > const &f)
Remove a field in an STObject.
@@ -834,7 +836,7 @@ $(function() {
std::unique_ptr< grpc::ServerCompletionQueue > cq_
-Resource::Consumer getUsage()
+Resource::Consumer getUsage()
std::shared_ptr< InfoSub > pointer
virtual LedgerMaster & getLedgerMaster()=0
@@ -849,28 +851,28 @@ $(function() {
-GRPCServerImpl(Application &app)
+GRPCServerImpl(Application &app)
Endpoint from_asio(boost::asio::ip::address const &address)
Convert to Endpoint.
Maps an rpc error code to its token, default message, and HTTP status.
-Resource::Charge getLoadType()
+Resource::Charge getLoadType()
std::pair< org::xrpl::rpc::v1::GetLedgerDataResponse, grpc::Status > doLedgerDataGrpc(RPC::GRPCContext< org::xrpl::rpc::v1::GetLedgerDataRequest > &context)
-std::optional< boost::asio::ip::tcp::endpoint > getProxiedClientEndpoint()
-
-void setIsUnlimited(Response &response, bool isUnlimited)
+std::optional< boost::asio::ip::tcp::endpoint > getProxiedClientEndpoint()
+
+void setIsUnlimited(Response &response, bool isUnlimited)
BindListener< Request, Response > bindListener_
-
+
Json::Value forwardToP2p(RPC::JsonContext &context)
Forward a JSON request to a p2p node and return the response.
bool isUnlimited(Role const &role)
ADMIN and IDENTIFIED roles shall have unlimited resources.
virtual Resource::Manager & getResourceManager()=0
-
+
void setCurrentThreadName(std::string_view name)
Changes the name of the caller thread.
T emplace_back(T... args)
Use hash_* containers for keys that do not need a cryptographically secure hashing algorithm.
-std::vector< std::shared_ptr< Processor > > setupListeners()
+std::vector< std::shared_ptr< Processor > > setupListeners()
virtual beast::Journal journal(std::string const &name)=0
@@ -882,33 +884,33 @@ $(function() {
An endpoint that consumes resources.
-
+
std::optional< T > get(std::string const &name) const
-Role getRole(bool isUnlimited)
+Role getRole(bool isUnlimited)
T find_first_of(T... args)
-std::optional< boost::asio::ip::address > getProxiedClientIpAddress()
-void forwardToP2p(RPC::GRPCContext< Request > &context)
+std::optional< boost::asio::ip::address > getProxiedClientIpAddress()
+void forwardToP2p(RPC::GRPCContext< Request > &context)
-std::optional< boost::asio::ip::tcp::endpoint > getClientEndpoint()
+std::optional< boost::asio::ip::tcp::endpoint > getClientEndpoint()
-
+
static std::optional< Endpoint > from_string_checked(std::string const &s)
Create an Endpoint from a string.
-std::optional< std::string > getUser()
+std::optional< std::string > getUser()
Role
Indicates the level of administrative permission to grant.
-virtual void process() override
+virtual void process() override
std::string serverAddress_
bool exists(std::string const &name) const
Returns true if a section with the given name exists.
grpc::ServerAsyncResponseWriter< Response > responder_
Section & section(std::string const &name)
Returns the section with the given name.
-std::optional< boost::asio::ip::address > getClientIpAddress()
+std::optional< boost::asio::ip::address > getClientIpAddress()