diff --git a/src/LedgerNode.cpp b/src/LedgerNode.cpp index 05156e657a..21238792ea 100644 --- a/src/LedgerNode.cpp +++ b/src/LedgerNode.cpp @@ -3,6 +3,27 @@ #include "boost/make_shared.hpp" +LedgerStateParms Ledger::writeBack(LedgerStateParms parms, SerializedLedgerEntry::pointer entry) +{ + ScopedLock l(mAccountStateMap->Lock()); + bool create = false; + + if (!mAccountStateMap->hasItem(entry->getIndex())) + { + if ((parms & lepCREATE) == 0) + return lepMISSING; + create = true; + } + + SHAMapItem::pointer item = boost::make_shared(entry->getIndex()); + entry->add(item->peekSerializer()); + + if (!mAccountStateMap->updateGiveItem(item, false)) + return lepERROR; + + return create ? lepCREATED : lepOKAY; +} + SerializedLedgerEntry::pointer Ledger::getAccountRoot(LedgerStateParms& parms, const uint160& accountID) { uint256 nodeID=getAccountRootIndex(accountID);