From 0b4553506106313b4f7d76c29c73ce441f53966b Mon Sep 17 00:00:00 2001 From: Nik Bougalis Date: Sat, 28 Feb 2015 13:28:54 -0800 Subject: [PATCH] Calculate deep offer quality --- src/ripple/app/book/BookTip.h | 5 +++-- src/ripple/app/book/impl/BookTip.cpp | 15 +++++++++------ 2 files changed, 12 insertions(+), 8 deletions(-) diff --git a/src/ripple/app/book/BookTip.h b/src/ripple/app/book/BookTip.h index af949b010a..36e70835c9 100644 --- a/src/ripple/app/book/BookTip.h +++ b/src/ripple/app/book/BookTip.h @@ -44,6 +44,7 @@ private: uint256 m_dir; uint256 m_index; SLE::pointer m_entry; + Quality m_quality; LedgerView& view() const noexcept @@ -67,10 +68,10 @@ public: return m_index; } - Quality const + Quality const& quality() const noexcept { - return Quality (getQuality (m_dir)); + return m_quality; } SLE::pointer const& diff --git a/src/ripple/app/book/impl/BookTip.cpp b/src/ripple/app/book/impl/BookTip.cpp index 6750d3f1f2..25874f6a19 100644 --- a/src/ripple/app/book/impl/BookTip.cpp +++ b/src/ripple/app/book/impl/BookTip.cpp @@ -28,6 +28,7 @@ BookTip::BookTip (LedgerView& view, BookRef book) , m_valid (false) , m_book (getBookBase (book)) , m_end (getQualityNext (m_book)) + , m_quality () { } @@ -46,31 +47,33 @@ BookTip::step () for(;;) { // See if there's an entry at or worse than current quality. - auto const page ( - view().getNextLedgerIndex (m_book, m_end)); + auto const first_page (view().getNextLedgerIndex (m_book, m_end)); - if (page.isZero()) + if (first_page.isZero()) return false; unsigned int di (0); SLE::pointer dir; - if (view().dirFirst (page, dir, di, m_index)) + + if (view().dirFirst (first_page, dir, di, m_index)) { m_dir = dir->getIndex(); m_entry = view().entryCache (ltOFFER, m_index); + m_quality = Quality (getQuality (first_page)); m_valid = true; // Next query should start before this directory - m_book = page; + m_book = first_page; // The quality immediately before the next quality --m_book; break; } + // There should never be an empty directory but just in case, // we handle that case by advancing to the next directory. - m_book = page; + m_book = first_page; } return true;