Simplify lookupLedger to use an RPC::Context.

This commit is contained in:
Tom Ritchford
2015-06-30 15:38:59 -04:00
committed by Vinnie Falco
parent c094772bc0
commit a0010effbc
18 changed files with 46 additions and 60 deletions

View File

@@ -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;

View File

@@ -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;

View File

@@ -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;

View File

@@ -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;

View File

@@ -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;

View File

@@ -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;

View File

@@ -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;

View File

@@ -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;

View File

@@ -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;

View File

@@ -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();

View File

@@ -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;

View File

@@ -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;

View File

@@ -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;

View File

@@ -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;

View File

@@ -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);

View File

@@ -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;

View File

@@ -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

View File

@@ -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