xrpld
Loading...
Searching...
No Matches
ReadView.cpp
1#include <xrpl/ledger/ReadView.h>
2
3#include <xrpl/basics/base_uint.h>
4#include <xrpl/beast/hash/uhash.h>
5#include <xrpl/ledger/detail/ReadViewFwdRange.h>
6#include <xrpl/ledger/entries/AmendmentsEntry.h>
7#include <xrpl/protocol/Indexes.h>
8#include <xrpl/protocol/Keylet.h>
9#include <xrpl/protocol/Rules.h>
10#include <xrpl/protocol/SField.h>
11
12#include <optional>
13#include <unordered_set>
14
15namespace xrpl {
16
20
21auto
22ReadView::SlesType::begin() const -> Iterator
23{
24 return Iterator(view_, view_->slesBegin());
25}
26
27auto
28ReadView::SlesType::end() const -> Iterator
29{
30 return Iterator(view_, view_->slesEnd());
31}
32
33auto
34ReadView::SlesType::upperBound(key_type const& key) const -> Iterator
35{
36 return Iterator(view_, view_->slesUpperBound(key));
37}
38
42
43bool
45{
46 return begin() == end();
47}
48
49auto
50ReadView::TxsType::begin() const -> Iterator
51{
52 return Iterator(view_, view_->txsBegin());
53}
54
55auto
56ReadView::TxsType::end() const -> Iterator
57{
58 return Iterator(view_, view_->txsEnd());
59}
60
62makeRulesGivenLedger(DigestAwareReadView const& ledger, Rules const& current)
63{
64 return makeRulesGivenLedger(ledger, current.presets());
65}
66
69 DigestAwareReadView const& ledger,
71{
72 Keylet const k = keylet::amendments();
73 std::optional const digest = ledger.digest(k.key);
74 if (digest)
75 {
76 if (AmendmentsEntryR const entry(k, ledger); entry)
77 return Rules(presets, digest, entry->getFieldV256(sfAmendments));
78 }
79 return Rules(presets);
80}
81
82} // namespace xrpl
ReadView that associates keys with digests.
Definition ReadView.h:279
virtual std::optional< DigestType > digest(key_type const &key) const =0
Return the digest associated with the key.
UInt256 key_type
Definition ReadView.h:45
Rules controlling protocol behavior.
Definition Rules.h:40
Rules(Rules const &)=default
std::unordered_set< UInt256, beast::Uhash<> > const & presets() const
Definition Rules.cpp:176
Keylet const & amendments() noexcept
The index of the amendment table.
Definition Indexes.cpp:248
Use hash_* containers for keys that do not need a cryptographically secure hashing algorithm.
Definition algorithm.h:5
static Hasher::result_type digest(void const *data, std::size_t size) noexcept
Definition tokens.cpp:140
Rules makeRulesGivenLedger(DigestAwareReadView const &ledger, Rules const &current)
Definition ReadView.cpp:62
BaseUInt< 256 > UInt256
Definition base_uint.h:580
AmendmentsEntry< ReadView > AmendmentsEntryR
A pair of SHAMap key and LedgerEntryType.
Definition Keylet.h:20
UInt256 key
Definition Keylet.h:21
Iterator begin() const
Definition ReadView.cpp:22
Iterator upperBound(key_type const &key) const
Definition ReadView.cpp:34
Iterator end() const
Definition ReadView.cpp:28
SlesType(ReadView const &view)
Definition ReadView.cpp:17
Iterator end() const
Definition ReadView.cpp:56
Iterator begin() const
Definition ReadView.cpp:50
TxsType(ReadView const &view)
Definition ReadView.cpp:39