diff --git a/src/cpp/ripple/Ledger.cpp b/src/cpp/ripple/Ledger.cpp index d97d767d56..c4508cd44c 100644 --- a/src/cpp/ripple/Ledger.cpp +++ b/src/cpp/ripple/Ledger.cpp @@ -8,7 +8,7 @@ SETUP_LOG (Ledger) Ledger::Ledger (const RippleAddress& masterID, uint64 startAmount) : mTotCoins (startAmount) - , mLedgerSeq (1) + , mLedgerSeq (1) // First Ledger , mCloseTime (0) , mParentCloseTime (0) , mCloseResolution (LEDGER_TIME_ACCURACY) @@ -194,6 +194,7 @@ void Ledger::updateHash () mAccountHash.zero (); } + // VFALCO TODO Fix this hard coded magic number 118 Serializer s (118); s.add32 (HashPrefix::ledgerMaster); addRaw (s); @@ -205,7 +206,8 @@ void Ledger::setRaw (Serializer& s, bool hasPrefix) { SerializerIterator sit (s); - if (hasPrefix) sit.get32 (); + if (hasPrefix) + sit.get32 (); mLedgerSeq = sit.get32 (); mTotCoins = sit.get64 (); @@ -597,6 +599,7 @@ void Ledger::saveAcceptedLedger (Job&, bool fromConsensus) { ScopedLock sl (getApp().getLedgerDB ()->getDBLock ()); + getApp().getLedgerDB ()->getDB ()->executeSQL (boost::str (addLedger % getHash ().GetHex () % mLedgerSeq % mParentHash.GetHex () % boost::lexical_cast (mTotCoins) % mCloseTime % mParentCloseTime % @@ -1488,7 +1491,10 @@ uint256 Ledger::getLedgerHash (uint32 ledgerIndex) WriteLog (lsWARNING, Ledger) << "Ledger " << mLedgerSeq << " missing hash for " << ledgerIndex << " (" << vec.size () << "," << diff << ")"; } - else WriteLog (lsWARNING, Ledger) << "Ledger " << mLedgerSeq << ":" << getHash () << " missing normal list"; + else + { + WriteLog (lsWARNING, Ledger) << "Ledger " << mLedgerSeq << ":" << getHash () << " missing normal list"; + } } if ((ledgerIndex & 0xff) != 0) diff --git a/src/cpp/ripple/Ledger.h b/src/cpp/ripple/Ledger.h index 13ed06df14..6d0ddc686a 100644 --- a/src/cpp/ripple/Ledger.h +++ b/src/cpp/ripple/Ledger.h @@ -73,6 +73,7 @@ public: uint32 ledgerSeq, bool & loaded); // used for database ledgers Ledger (Blob const & rawLedger, bool hasPrefix); + Ledger (const std::string & rawLedger, bool hasPrefix); Ledger (bool dummy, Ledger & previous); // ledger after this one @@ -232,6 +233,9 @@ public: // next/prev function SLE::pointer getSLE (uint256 const & uHash); // SLE is mutable SLE::pointer getSLEi (uint256 const & uHash); // SLE is immutable + + // VFALCO NOTE These seem to let you walk the list of ledgers + // uint256 getFirstLedgerIndex (); uint256 getLastLedgerIndex (); uint256 getNextLedgerIndex (uint256 const & uHash); // first node >hash diff --git a/src/cpp/ripple/ripple_Application.cpp b/src/cpp/ripple/ripple_Application.cpp index 91090befdc..3d6f011182 100644 --- a/src/cpp/ripple/ripple_Application.cpp +++ b/src/cpp/ripple/ripple_Application.cpp @@ -14,9 +14,15 @@ SETUP_LOG (Application) // VFALCO TODO Move the function definitions into the class declaration class Application : public IApplication + , public SharedSingleton , LeakChecked { public: + static Application* createInstance () + { + return new Application; + } + class Holder; Application (); @@ -260,7 +266,8 @@ private: }; Application::Application () - : mIOService ((theConfig.NODE_SIZE >= 2) ? 2 : 1) + : SharedSingleton (SingletonLifetime::persistAfterCreation) + , mIOService ((theConfig.NODE_SIZE >= 2) ? 2 : 1) , mIOWork (mIOService) , mAuxWork (mAuxService) , mNetOps (mIOService, &mLedgerMaster) @@ -995,37 +1002,7 @@ void Application::updateTables (bool ldbImport) //------------------------------------------------------------------------------ -// Since its an global with static storage duration -// it has to be wrapped in a SharedSingleton. -// -class Application::Holder : public SharedSingleton -{ -public: - Holder () - : SharedSingleton (SingletonLifetime::persistAfterCreation) - , m_application (new Application) - { - } - - ~Holder () - { - } - - static Holder* createInstance () - { - return new Holder; - } - - IApplication& getApp () - { - return *m_application; - } - -private: - ScopedPointer m_application; -}; - IApplication& getApp () { - return Application::Holder::getInstance ()->getApp (); + return *Application::getInstance (); }