From ce3a8d9d7685e925e241c488cc9a5735bc0e1c28 Mon Sep 17 00:00:00 2001 From: JoelKatz Date: Thu, 30 May 2013 13:20:34 -0700 Subject: [PATCH] Use the new visitor code to reimplement account_offers. --- src/cpp/ripple/RPCHandler.cpp | 31 +++++++++++++------------------ 1 file changed, 13 insertions(+), 18 deletions(-) diff --git a/src/cpp/ripple/RPCHandler.cpp b/src/cpp/ripple/RPCHandler.cpp index e0ec6417d..67bc87269 100644 --- a/src/cpp/ripple/RPCHandler.cpp +++ b/src/cpp/ripple/RPCHandler.cpp @@ -1101,6 +1101,17 @@ Json::Value RPCHandler::doAccountLines(Json::Value jvRequest, int& cost, ScopedL return jvResult; } +static void offerAdder(Json::Value& jvLines, SLE::ref offer) +{ + if (offer->getType() == ltOFFER) + { + Json::Value& obj = jvLines.append(Json::objectValue); + offer->getFieldAmount(sfTakerPays).setJson(obj["taker_pays"]); + offer->getFieldAmount(sfTakerGets).setJson(obj["taker_gets"]); + obj["seq"] = offer->getFieldU32(sfSequence); + } +} + // { // account: || // account_index: // optional, defaults to 0. @@ -1139,26 +1150,10 @@ Json::Value RPCHandler::doAccountOffers(Json::Value jvRequest, int& cost, Scoped jvResult["account_index"] = iIndex; if (lpLedger->hasAccount(raAccount)) - { - Json::Value& jsonLines = (jvResult["offers"] = Json::arrayValue); - - AccountItems offers(raAccount.getAccountID(), lpLedger, AccountItem::pointer(new Offer())); - BOOST_FOREACH(AccountItem::ref item, offers.getItems()) - { - Offer* offer=(Offer*)item.get(); - - Json::Value& obj = jsonLines.append(Json::objectValue); - - offer->getTakerPays().setJson(obj["taker_pays"]); - offer->getTakerGets().setJson(obj["taker_gets"]); - obj["seq"] = offer->getSeq(); - - } - } + lpLedger->visitAccountItems(raAccount.getAccountID(), + BIND_TYPE(&offerAdder, boost::ref(jvResult["offers"] = Json::arrayValue), P_1)); else - { jvResult = rpcError(rpcACT_NOT_FOUND); - } return jvResult; }