Implement ledger::account_receivable in terms of receivable iterators

This commit is contained in:
Colin LeMahieu 2024-03-18 12:48:20 +00:00
commit a5e1500680
No known key found for this signature in database
GPG key ID: 43708520C8DFB938

View file

@ -855,19 +855,11 @@ nano::uint128_t nano::ledger::account_balance (store::transaction const & transa
nano::uint128_t nano::ledger::account_receivable (store::transaction const & transaction_a, nano::account const & account_a, bool only_confirmed_a) nano::uint128_t nano::ledger::account_receivable (store::transaction const & transaction_a, nano::account const & account_a, bool only_confirmed_a)
{ {
nano::uint128_t result (0); nano::uint128_t result{ 0 };
nano::account end (account_a.number () + 1); for (auto i = receivable_upper_bound (transaction_a, account_a, 0), n = receivable_end (); i != n; ++i)
for (auto i (store.pending.begin (transaction_a, nano::pending_key (account_a, 0))), n (store.pending.begin (transaction_a, nano::pending_key (end, 0))); i != n; ++i)
{ {
nano::pending_info const & info (i->second); auto const & [key, info] = *i;
if (only_confirmed_a) if (!only_confirmed_a || block_confirmed (transaction_a, key.hash))
{
if (block_confirmed (transaction_a, i->first.hash))
{
result += info.amount.number ();
}
}
else
{ {
result += info.amount.number (); result += info.amount.number ();
} }