mirror of
https://github.com/XRPLF/rippled.git
synced 2025-12-06 17:27:55 +00:00
Add SLE next/prev functions.
This commit is contained in:
@@ -153,6 +153,12 @@ public:
|
||||
static Ledger::pointer loadByIndex(uint32 ledgerIndex);
|
||||
static Ledger::pointer loadByHash(const uint256& ledgerHash);
|
||||
|
||||
// next/prev function
|
||||
SLE::pointer getNextSLE(const uint256& hash); // first node >hash
|
||||
SLE::pointer getNextSLE(const uint256& hash, const uint256& max); // first node >hash, <max
|
||||
SLE::pointer getPrevSLE(const uint256& hash); // last node <hash
|
||||
SLE::pointer getPrevSLE(const uint256& hash, const uint256& min); // last node <hash, >min
|
||||
|
||||
// index calculation functions
|
||||
static uint256 getAccountRootIndex(const uint160& uAccountID);
|
||||
|
||||
|
||||
@@ -43,6 +43,38 @@ LedgerStateParms Ledger::writeBack(LedgerStateParms parms, SLE::pointer entry)
|
||||
return lepOKAY;
|
||||
}
|
||||
|
||||
SLE::pointer Ledger::getNextSLE(const uint256& hash)
|
||||
{
|
||||
SHAMapItem::pointer node = mAccountStateMap->peekNextItem(hash);
|
||||
if (!node)
|
||||
return SLE::pointer();
|
||||
return boost::make_shared<SLE>(node->peekSerializer(), node->getTag());
|
||||
}
|
||||
|
||||
SLE::pointer Ledger::getNextSLE(const uint256& hash, const uint256& max)
|
||||
{
|
||||
SHAMapItem::pointer node = mAccountStateMap->peekNextItem(hash);
|
||||
if ((!node) || (node->getTag() > max))
|
||||
return SLE::pointer();
|
||||
return boost::make_shared<SLE>(node->peekSerializer(), node->getTag());
|
||||
}
|
||||
|
||||
SLE::pointer Ledger::getPrevSLE(const uint256& hash)
|
||||
{
|
||||
SHAMapItem::pointer node = mAccountStateMap->peekPrevItem(hash);
|
||||
if (!node)
|
||||
return SLE::pointer();
|
||||
return boost::make_shared<SLE>(node->peekSerializer(), node->getTag());
|
||||
}
|
||||
|
||||
SLE::pointer Ledger::getPrevSLE(const uint256& hash, const uint256& min)
|
||||
{
|
||||
SHAMapItem::pointer node = mAccountStateMap->peekNextItem(hash);
|
||||
if ((!node) || (node->getTag() < min))
|
||||
return SLE::pointer();
|
||||
return boost::make_shared<SLE>(node->peekSerializer(), node->getTag());
|
||||
}
|
||||
|
||||
SLE::pointer Ledger::getASNode(LedgerStateParms& parms, const uint256& nodeID,
|
||||
LedgerEntryType let )
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user