From e3c77d2c0cf16da29c045dab745cce2f2dc86f91 Mon Sep 17 00:00:00 2001 From: JoelKatz Date: Thu, 9 Aug 2012 19:21:08 -0700 Subject: [PATCH] More LedgerEntrySet code. Retrieve as Json. Finalize before serializing. --- src/LedgerEntrySet.cpp | 60 ++++++++++++++++++++++++++++++++++++++++++ src/LedgerEntrySet.h | 3 +++ 2 files changed, 63 insertions(+) diff --git a/src/LedgerEntrySet.cpp b/src/LedgerEntrySet.cpp index fb4903ff4c..cf2e0234bb 100644 --- a/src/LedgerEntrySet.cpp +++ b/src/LedgerEntrySet.cpp @@ -189,4 +189,64 @@ void LedgerEntrySet::entryDelete(SLE::pointer& sle, bool unfunded) } } +Json::Value LedgerEntrySet::getJson(int) const +{ + Json::Value ret(Json::objectValue); + + Json::Value nodes(Json::arrayValue); + for (boost::unordered_map::const_iterator it = mEntries.begin(), + end = mEntries.end(); it != end; ++it) + { + Json::Value entry(Json::objectValue); + entry["node"] = it->first.GetHex(); + switch (it->second.mEntry->getType()) + { + case ltINVALID: entry["type"] = "invalid"; break; + case ltACCOUNT_ROOT: entry["type"] = "acccount_root"; break; + case ltDIR_NODE: entry["type"] = "dir_node"; break; + case ltGENERATOR_MAP: entry["type"] = "generator_map"; break; + case ltRIPPLE_STATE: entry["type"] = "ripple_state"; break; + case ltNICKNAME: entry["type"] = "nickname"; break; + case ltOFFER: entry["type"] = "offer"; break; + default: assert(false); + } + switch (it->second.mAction) + { + case taaCACHED: entry["action"] = "cache"; break; + case taaMODIFY: entry["action"] = "modify"; break; + case taaDELETE: entry["action"] = "delete"; break; + case taaCREATE: entry["action"] = "create"; break; + default: assert(false); + } + nodes.append(entry); + } + ret["nodes" ] = nodes; + + return ret; +} + +void LedgerEntrySet::addRawMeta(Serializer& s) +{ + for (boost::unordered_map::const_iterator it = mEntries.begin(), + end = mEntries.end(); it != end; ++it) + { + switch (it->second.mAction) + { + case taaMODIFY: + // WRITEME + break; + case taaDELETE: + // WRITEME + break; + case taaCREATE: + // WRITEME + break; + default: + // ignore these + break; + } + } + mSet.addRaw(s); +} + // vim:ts=4 diff --git a/src/LedgerEntrySet.h b/src/LedgerEntrySet.h index e600060f33..11843f060c 100644 --- a/src/LedgerEntrySet.h +++ b/src/LedgerEntrySet.h @@ -58,6 +58,9 @@ public: void entryDelete(SLE::pointer&, bool unfunded); void entryModify(SLE::pointer&); // This entry will be modified + Json::Value getJson(int) const; + void addRawMeta(Serializer&); + // iterator functions bool isEmpty() const { return mEntries.empty(); } boost::unordered_map::const_iterator begin() const { return mEntries.begin(); }