From a0010effbc8a6ad9b51202de698f294ebc601eb9 Mon Sep 17 00:00:00 2001 From: Tom Ritchford Date: Tue, 30 Jun 2015 15:38:59 -0400 Subject: [PATCH] Simplify lookupLedger to use an RPC::Context. --- .../rpc/handlers/AccountCurrenciesHandler.cpp | 3 +- src/ripple/rpc/handlers/AccountInfo.cpp | 2 +- src/ripple/rpc/handlers/AccountLines.cpp | 2 +- src/ripple/rpc/handlers/AccountObjects.cpp | 2 +- src/ripple/rpc/handlers/AccountOffers.cpp | 2 +- src/ripple/rpc/handlers/AccountTx.cpp | 8 ++-- src/ripple/rpc/handlers/AccountTxOld.cpp | 8 ++-- src/ripple/rpc/handlers/BookOffers.cpp | 3 +- src/ripple/rpc/handlers/GatewayBalances.cpp | 2 +- src/ripple/rpc/handlers/Ledger.cpp | 2 +- src/ripple/rpc/handlers/LedgerData.cpp | 2 +- src/ripple/rpc/handlers/LedgerEntry.cpp | 3 +- src/ripple/rpc/handlers/LedgerHeader.cpp | 3 +- src/ripple/rpc/handlers/NoRippleCheck.cpp | 2 +- src/ripple/rpc/handlers/RipplePathFind.cpp | 6 +-- src/ripple/rpc/handlers/TransactionEntry.cpp | 5 +-- src/ripple/rpc/impl/LookupLedger.cpp | 39 +++++++++---------- src/ripple/rpc/impl/LookupLedger.h | 12 ++---- 18 files changed, 46 insertions(+), 60 deletions(-) diff --git a/src/ripple/rpc/handlers/AccountCurrenciesHandler.cpp b/src/ripple/rpc/handlers/AccountCurrenciesHandler.cpp index 83857c42e..db0782156 100644 --- a/src/ripple/rpc/handlers/AccountCurrenciesHandler.cpp +++ b/src/ripple/rpc/handlers/AccountCurrenciesHandler.cpp @@ -30,8 +30,7 @@ Json::Value doAccountCurrencies (RPC::Context& context) // Get the current ledger Ledger::pointer ledger; - Json::Value result (RPC::lookupLedger (params, ledger, context.ledgerMaster)); - + auto result = RPC::lookupLedger (ledger, context); if (!ledger) return result; diff --git a/src/ripple/rpc/handlers/AccountInfo.cpp b/src/ripple/rpc/handlers/AccountInfo.cpp index 28fb4338a..96a67845f 100644 --- a/src/ripple/rpc/handlers/AccountInfo.cpp +++ b/src/ripple/rpc/handlers/AccountInfo.cpp @@ -38,7 +38,7 @@ Json::Value doAccountInfo (RPC::Context& context) auto& params = context.params; Ledger::pointer ledger; - Json::Value result = RPC::lookupLedger (params, ledger, context.ledgerMaster); + auto result = RPC::lookupLedger (ledger, context); if (!ledger) return result; diff --git a/src/ripple/rpc/handlers/AccountLines.cpp b/src/ripple/rpc/handlers/AccountLines.cpp index dbdf3ae27..6dd7406d3 100644 --- a/src/ripple/rpc/handlers/AccountLines.cpp +++ b/src/ripple/rpc/handlers/AccountLines.cpp @@ -82,7 +82,7 @@ Json::Value doAccountLines (RPC::Context& context) return RPC::missing_field_error (jss::account); Ledger::pointer ledger; - Json::Value result (RPC::lookupLedger (params, ledger, context.ledgerMaster)); + auto result = RPC::lookupLedger (ledger, context); if (! ledger) return result; diff --git a/src/ripple/rpc/handlers/AccountObjects.cpp b/src/ripple/rpc/handlers/AccountObjects.cpp index 7aeb9eeef..7610f4ab2 100644 --- a/src/ripple/rpc/handlers/AccountObjects.cpp +++ b/src/ripple/rpc/handlers/AccountObjects.cpp @@ -47,7 +47,7 @@ Json::Value doAccountObjects (RPC::Context& context) return RPC::missing_field_error (jss::account); Ledger::pointer ledger; - auto result = RPC::lookupLedger (params, ledger, context.ledgerMaster); + auto result = RPC::lookupLedger (ledger, context); if (ledger == nullptr) return result; diff --git a/src/ripple/rpc/handlers/AccountOffers.cpp b/src/ripple/rpc/handlers/AccountOffers.cpp index 145ab481d..37120eab2 100644 --- a/src/ripple/rpc/handlers/AccountOffers.cpp +++ b/src/ripple/rpc/handlers/AccountOffers.cpp @@ -50,7 +50,7 @@ Json::Value doAccountOffers (RPC::Context& context) return RPC::missing_field_error (jss::account); Ledger::pointer ledger; - Json::Value result (RPC::lookupLedger (params, ledger, context.ledgerMaster)); + auto result = RPC::lookupLedger (ledger, context); if (! ledger) return result; diff --git a/src/ripple/rpc/handlers/AccountTx.cpp b/src/ripple/rpc/handlers/AccountTx.cpp index 65068b2b0..d36afe74a 100644 --- a/src/ripple/rpc/handlers/AccountTx.cpp +++ b/src/ripple/rpc/handlers/AccountTx.cpp @@ -83,13 +83,13 @@ Json::Value doAccountTx (RPC::Context& context) } else { - Ledger::pointer l; - Json::Value ret = RPC::lookupLedger (params, l, context.ledgerMaster); + Ledger::pointer ledger; + auto ret = RPC::lookupLedger (ledger, context); - if (!l) + if (! ledger) return ret; - uLedgerMin = uLedgerMax = l->getLedgerSeq (); + uLedgerMin = uLedgerMax = ledger->getLedgerSeq (); } Json::Value resumeToken; diff --git a/src/ripple/rpc/handlers/AccountTxOld.cpp b/src/ripple/rpc/handlers/AccountTxOld.cpp index b00fb9e16..2e8f93211 100644 --- a/src/ripple/rpc/handlers/AccountTxOld.cpp +++ b/src/ripple/rpc/handlers/AccountTxOld.cpp @@ -103,13 +103,13 @@ Json::Value doAccountTxOld (RPC::Context& context) } else { - Ledger::pointer l; - Json::Value ret = RPC::lookupLedger (context.params, l, context.ledgerMaster); + Ledger::pointer ledger; + auto ret = RPC::lookupLedger (ledger, context); - if (!l) + if (!ledger) return ret; - uLedgerMin = uLedgerMax = l->getLedgerSeq (); + uLedgerMin = uLedgerMax = ledger->getLedgerSeq (); } int count = 0; diff --git a/src/ripple/rpc/handlers/BookOffers.cpp b/src/ripple/rpc/handlers/BookOffers.cpp index 66fa827eb..f69b3f0ad 100644 --- a/src/ripple/rpc/handlers/BookOffers.cpp +++ b/src/ripple/rpc/handlers/BookOffers.cpp @@ -31,8 +31,7 @@ Json::Value doBookOffers (RPC::Context& context) return rpcError (rpcTOO_BUSY); Ledger::pointer lpLedger; - Json::Value jvResult ( - RPC::lookupLedger (context.params, lpLedger, context.ledgerMaster)); + auto jvResult = RPC::lookupLedger (lpLedger, context); if (!lpLedger) return jvResult; diff --git a/src/ripple/rpc/handlers/GatewayBalances.cpp b/src/ripple/rpc/handlers/GatewayBalances.cpp index 89f9a2a7b..6bebf7a54 100644 --- a/src/ripple/rpc/handlers/GatewayBalances.cpp +++ b/src/ripple/rpc/handlers/GatewayBalances.cpp @@ -50,7 +50,7 @@ Json::Value doGatewayBalances (RPC::Context& context) // Get the current ledger Ledger::pointer ledger; - Json::Value result (RPC::lookupLedger (params, ledger, context.ledgerMaster)); + auto result = RPC::lookupLedger (ledger, context); if (!ledger) return result; diff --git a/src/ripple/rpc/handlers/Ledger.cpp b/src/ripple/rpc/handlers/Ledger.cpp index 421bfcae7..8df222916 100644 --- a/src/ripple/rpc/handlers/Ledger.cpp +++ b/src/ripple/rpc/handlers/Ledger.cpp @@ -41,7 +41,7 @@ Status LedgerHandler::check () if (!needsLedger) return Status::OK; - if (auto s = RPC::lookupLedger (params, ledger_, context_.ledgerMaster, result_)) + if (auto s = RPC::lookupLedger (ledger_, context_, result_)) return s; bool bFull = params[jss::full].asBool(); diff --git a/src/ripple/rpc/handlers/LedgerData.cpp b/src/ripple/rpc/handlers/LedgerData.cpp index d1e175c41..e1bb69f3c 100644 --- a/src/ripple/rpc/handlers/LedgerData.cpp +++ b/src/ripple/rpc/handlers/LedgerData.cpp @@ -40,7 +40,7 @@ Json::Value doLedgerData (RPC::Context& context) Ledger::pointer lpLedger; auto const& params = context.params; - Json::Value jvResult = RPC::lookupLedger (params, lpLedger, context.ledgerMaster); + auto jvResult = RPC::lookupLedger (lpLedger, context); if (!lpLedger) return jvResult; diff --git a/src/ripple/rpc/handlers/LedgerEntry.cpp b/src/ripple/rpc/handlers/LedgerEntry.cpp index e20f4d8f9..4808474dc 100644 --- a/src/ripple/rpc/handlers/LedgerEntry.cpp +++ b/src/ripple/rpc/handlers/LedgerEntry.cpp @@ -31,8 +31,7 @@ namespace ripple { Json::Value doLedgerEntry (RPC::Context& context) { Ledger::pointer lpLedger; - Json::Value jvResult = RPC::lookupLedger ( - context.params, lpLedger, context.ledgerMaster); + auto jvResult = RPC::lookupLedger (lpLedger, context); if (!lpLedger) return jvResult; diff --git a/src/ripple/rpc/handlers/LedgerHeader.cpp b/src/ripple/rpc/handlers/LedgerHeader.cpp index 93aeec7a8..3c9f4565e 100644 --- a/src/ripple/rpc/handlers/LedgerHeader.cpp +++ b/src/ripple/rpc/handlers/LedgerHeader.cpp @@ -29,8 +29,7 @@ namespace ripple { Json::Value doLedgerHeader (RPC::Context& context) { Ledger::pointer lpLedger; - Json::Value jvResult = RPC::lookupLedger ( - context.params, lpLedger, context.ledgerMaster); + auto jvResult = RPC::lookupLedger (lpLedger, context); if (!lpLedger) return jvResult; diff --git a/src/ripple/rpc/handlers/NoRippleCheck.cpp b/src/ripple/rpc/handlers/NoRippleCheck.cpp index 8ddb94c2a..1e4295ccc 100644 --- a/src/ripple/rpc/handlers/NoRippleCheck.cpp +++ b/src/ripple/rpc/handlers/NoRippleCheck.cpp @@ -84,7 +84,7 @@ Json::Value doNoRippleCheck (RPC::Context& context) transactions = params["transactions"].asBool(); Ledger::pointer ledger; - Json::Value result (RPC::lookupLedger (params, ledger, context.ledgerMaster)); + auto result = RPC::lookupLedger (ledger, context); if (! ledger) return result; diff --git a/src/ripple/rpc/handlers/RipplePathFind.cpp b/src/ripple/rpc/handlers/RipplePathFind.cpp index 28c4a39d7..016b51156 100644 --- a/src/ripple/rpc/handlers/RipplePathFind.cpp +++ b/src/ripple/rpc/handlers/RipplePathFind.cpp @@ -73,8 +73,7 @@ Json::Value doRipplePathFind (RPC::Context& context) context.params.isMember(jss::ledger_hash)) { // The caller specified a ledger - jvResult = RPC::lookupLedger ( - context.params, lpLedger, context.ledgerMaster); + jvResult = RPC::lookupLedger (lpLedger, context); if (!lpLedger) return jvResult; } @@ -90,7 +89,8 @@ Json::Value doRipplePathFind (RPC::Context& context) lpLedger = context.ledgerMaster.getClosedLedger(); PathRequest::pointer request; - context.suspend ([&request, &context, &jvResult, &lpLedger](RPC::Callback const& c) + context.suspend ([&request, &context, &jvResult, &lpLedger] + (RPC::Callback const& c) { jvResult = getApp().getPathRequests().makeLegacyPathRequest ( request, c, lpLedger, context.params); diff --git a/src/ripple/rpc/handlers/TransactionEntry.cpp b/src/ripple/rpc/handlers/TransactionEntry.cpp index f9f4ca953..f466d5255 100644 --- a/src/ripple/rpc/handlers/TransactionEntry.cpp +++ b/src/ripple/rpc/handlers/TransactionEntry.cpp @@ -31,10 +31,7 @@ namespace ripple { Json::Value doTransactionEntry (RPC::Context& context) { Ledger::pointer lpLedger; - Json::Value jvResult = RPC::lookupLedger ( - context.params, - lpLedger, - context.ledgerMaster); + Json::Value jvResult = RPC::lookupLedger (lpLedger, context); if (!lpLedger) return jvResult; diff --git a/src/ripple/rpc/impl/LookupLedger.cpp b/src/ripple/rpc/impl/LookupLedger.cpp index 3eb3f7426..04207cfab 100644 --- a/src/ripple/rpc/impl/LookupLedger.cpp +++ b/src/ripple/rpc/impl/LookupLedger.cpp @@ -34,15 +34,16 @@ bool isValidatedOld (LedgerMaster& ledgerMaster) Tuning::maxValidatedLedgerAge; } -Status ledgerFromRequest ( - Json::Value const& params, - Ledger::pointer& ledger, - LedgerMaster& ledgerMaster) +Status ledgerFromRequest (Ledger::pointer& ledger, Context& context) { static auto const minSequenceGap = 10; ledger.reset(); + auto& params = context.params; + auto& netOps = context.netOps; + auto& ledgerMaster = context.ledgerMaster; + auto indexValue = params[jss::ledger_index]; auto hashValue = params[jss::ledger_hash]; @@ -182,36 +183,32 @@ bool isValidated (LedgerMaster& ledgerMaster, Ledger& ledger) // optionally the fields "ledger_hash", "ledger_index" and // "ledger_current_index", if they are defined. Status lookupLedger ( - Json::Value const& params, - Ledger::pointer& ledger, - LedgerMaster& ledgerMaster, - Json::Value& jsonResult) + Ledger::pointer& ledger, Context& context, Json::Value& result) { - if (auto status = ledgerFromRequest (params, ledger, ledgerMaster)) + if (auto status = ledgerFromRequest (ledger, context)) return status; if (ledger->isClosed ()) { - jsonResult[jss::ledger_hash] = to_string (ledger->getHash()); - jsonResult[jss::ledger_index] = ledger->getLedgerSeq(); + result[jss::ledger_hash] = to_string (ledger->getHash()); + result[jss::ledger_index] = ledger->getLedgerSeq(); } else { - jsonResult[jss::ledger_current_index] = ledger->getLedgerSeq(); + result[jss::ledger_current_index] = ledger->getLedgerSeq(); } - jsonResult[jss::validated] = isValidated (ledgerMaster, *ledger); + + result[jss::validated] = isValidated (context.ledgerMaster, *ledger); return Status::OK; } -Json::Value lookupLedger ( - Json::Value const& params, - Ledger::pointer& ledger, - LedgerMaster& ledgerMaster) +Json::Value lookupLedger (Ledger::pointer& ledger, Context& context) { - Json::Value value (Json::objectValue); - if (auto status = lookupLedger (params, ledger, ledgerMaster, value)) - status.inject (value); - return value; + Json::Value result; + if (auto status = lookupLedger (ledger, context, result)) + status.inject (result); + + return result; } } // RPC diff --git a/src/ripple/rpc/impl/LookupLedger.h b/src/ripple/rpc/impl/LookupLedger.h index 55e9c2797..712ce3bd6 100644 --- a/src/ripple/rpc/impl/LookupLedger.h +++ b/src/ripple/rpc/impl/LookupLedger.h @@ -25,26 +25,22 @@ namespace ripple { namespace RPC { +class Context; + /** Look up a ledger from a request and fill a Json::Result with either an error, or data representing a ledger. If there is no error in the return value, then the ledger pointer will have been filled. */ -Json::Value lookupLedger ( - Json::Value const& request, - Ledger::pointer&, - LedgerMaster&); +Json::Value lookupLedger (Ledger::pointer&, Context&); /** Look up a ledger from a request and fill a Json::Result with the data representing a ledger. If the returned Status is OK, the ledger pointer will have been filled. */ Status lookupLedger ( - Json::Value const& request, - Ledger::pointer&, - LedgerMaster&, - Json::Value& result); + Ledger::pointer&, Context&, Json::Value& result); } // RPC } // ripple