rippled
Loading...
Searching...
No Matches
Public Types | Public Member Functions | Public Attributes | Private Attributes | List of all members
ripple::detail::CachedViewImpl Class Referenceabstract

#include <CachedView.h>

Inheritance diagram for ripple::detail::CachedViewImpl:
Inheritance graph
[legend]
Collaboration diagram for ripple::detail::CachedViewImpl:
Collaboration graph
[legend]

Public Types

using digest_type = uint256
 
using tx_type = std::pair< std::shared_ptr< STTx const >, std::shared_ptr< STObject const > >
 
using key_type = uint256
 
using mapped_type = std::shared_ptr< SLE const >
 

Public Member Functions

 CachedViewImpl ()=delete
 
 CachedViewImpl (CachedViewImpl const &)=delete
 
CachedViewImploperator= (CachedViewImpl const &)=delete
 
 CachedViewImpl (DigestAwareReadView const *base, CachedSLEs &cache)
 
bool exists (Keylet const &k) const override
 Determine if a state item exists. More...
 
std::shared_ptr< SLE const > read (Keylet const &k) const override
 Return the state item associated with a key. More...
 
bool open () const override
 Returns true if this reflects an open ledger. More...
 
LedgerInfo const & info () const override
 Returns information about the ledger. More...
 
Fees const & fees () const override
 Returns the fees for the base ledger. More...
 
Rules const & rules () const override
 Returns the tx processing rules. More...
 
std::optional< key_typesucc (key_type const &key, std::optional< key_type > const &last=std::nullopt) const override
 Return the key of the next state item. More...
 
std::unique_ptr< sles_type::iter_base > slesBegin () const override
 
std::unique_ptr< sles_type::iter_base > slesEnd () const override
 
std::unique_ptr< sles_type::iter_base > slesUpperBound (uint256 const &key) const override
 
std::unique_ptr< txs_type::iter_base > txsBegin () const override
 
std::unique_ptr< txs_type::iter_base > txsEnd () const override
 
bool txExists (key_type const &key) const override
 Returns true if a tx exists in the tx map. More...
 
tx_type txRead (key_type const &key) const override
 Read a transaction from the tx map. More...
 
std::optional< digest_typedigest (key_type const &key) const override
 Return the digest associated with the key. More...
 
NetClock::time_point parentCloseTime () const
 Returns the close time of the previous ledger. More...
 
LedgerIndex seq () const
 Returns the sequence number of the base ledger. More...
 
virtual STAmount balanceHook (AccountID const &account, AccountID const &issuer, STAmount const &amount) const
 
virtual std::uint32_t ownerCountHook (AccountID const &account, std::uint32_t count) const
 
virtual std::unique_ptr< sles_type::iter_base > slesUpperBound (key_type const &key) const =0
 

Public Attributes

sles_type sles
 Iterable range of ledger state items. More...
 
txs_type txs
 

Private Attributes

DigestAwareReadView const & base_
 
CachedSLEscache_
 
std::mutex mutex_
 
std::unordered_map< key_type, uint256, hardened_hash<> > map_
 

Detailed Description

Definition at line 35 of file CachedView.h.

Member Typedef Documentation

◆ digest_type

Definition at line 261 of file ReadView.h.

◆ tx_type

Definition at line 57 of file ReadView.h.

◆ key_type

Definition at line 60 of file ReadView.h.

◆ mapped_type

Definition at line 62 of file ReadView.h.

Constructor & Destructor Documentation

◆ CachedViewImpl() [1/3]

ripple::detail::CachedViewImpl::CachedViewImpl ( )
delete

◆ CachedViewImpl() [2/3]

ripple::detail::CachedViewImpl::CachedViewImpl ( CachedViewImpl const &  )
delete

◆ CachedViewImpl() [3/3]

ripple::detail::CachedViewImpl::CachedViewImpl ( DigestAwareReadView const *  base,
CachedSLEs cache 
)

Definition at line 49 of file CachedView.h.

Member Function Documentation

◆ operator=()

CachedViewImpl & ripple::detail::CachedViewImpl::operator= ( CachedViewImpl const &  )
delete

◆ exists()

bool ripple::detail::CachedViewImpl::exists ( Keylet const &  k) const
overridevirtual

Determine if a state item exists.

Note
This can be more efficient than calling read.
Returns
true if a SLE is associated with the specified key.

Implements ripple::ReadView.

Definition at line 28 of file CachedView.cpp.

◆ read()

std::shared_ptr< SLE const > ripple::detail::CachedViewImpl::read ( Keylet const &  k) const
overridevirtual

Return the state item associated with a key.

Effects: If the key exists, gives the caller ownership of the non-modifiable corresponding SLE.

Note
While the returned SLE is const from the perspective of the caller, it can be changed by other callers through raw operations.
Returns
nullptr if the key is not present or if the type does not match.

Implements ripple::ReadView.

Definition at line 34 of file CachedView.cpp.

◆ open()

bool ripple::detail::CachedViewImpl::open ( ) const
overridevirtual

Returns true if this reflects an open ledger.

Implements ripple::ReadView.

Definition at line 65 of file CachedView.h.

◆ info()

LedgerInfo const & ripple::detail::CachedViewImpl::info ( ) const
overridevirtual

Returns information about the ledger.

Implements ripple::ReadView.

Definition at line 71 of file CachedView.h.

◆ fees()

Fees const & ripple::detail::CachedViewImpl::fees ( ) const
overridevirtual

Returns the fees for the base ledger.

Implements ripple::ReadView.

Definition at line 77 of file CachedView.h.

◆ rules()

Rules const & ripple::detail::CachedViewImpl::rules ( ) const
overridevirtual

Returns the tx processing rules.

Implements ripple::ReadView.

Definition at line 83 of file CachedView.h.

◆ succ()

std::optional< key_type > ripple::detail::CachedViewImpl::succ ( key_type const &  key,
std::optional< key_type > const &  last = std::nullopt 
) const
overridevirtual

Return the key of the next state item.

This returns the key of the first state item whose key is greater than the specified key. If no such key is present, std::nullopt is returned.

If last is engaged, returns std::nullopt when the key returned would be outside the open interval (key, last).

Implements ripple::ReadView.

Definition at line 89 of file CachedView.h.

◆ slesBegin()

std::unique_ptr< sles_type::iter_base > ripple::detail::CachedViewImpl::slesBegin ( ) const
overridevirtual

Implements ripple::ReadView.

Definition at line 97 of file CachedView.h.

◆ slesEnd()

std::unique_ptr< sles_type::iter_base > ripple::detail::CachedViewImpl::slesEnd ( ) const
overridevirtual

Implements ripple::ReadView.

Definition at line 103 of file CachedView.h.

◆ slesUpperBound() [1/2]

std::unique_ptr< sles_type::iter_base > ripple::detail::CachedViewImpl::slesUpperBound ( uint256 const &  key) const
override

Definition at line 109 of file CachedView.h.

◆ txsBegin()

std::unique_ptr< txs_type::iter_base > ripple::detail::CachedViewImpl::txsBegin ( ) const
overridevirtual

Implements ripple::ReadView.

Definition at line 115 of file CachedView.h.

◆ txsEnd()

std::unique_ptr< txs_type::iter_base > ripple::detail::CachedViewImpl::txsEnd ( ) const
overridevirtual

Implements ripple::ReadView.

Definition at line 121 of file CachedView.h.

◆ txExists()

bool ripple::detail::CachedViewImpl::txExists ( key_type const &  key) const
overridevirtual

Returns true if a tx exists in the tx map.

A tx exists in the map if it is part of the base ledger, or if it is a newly inserted tx.

Implements ripple::ReadView.

Definition at line 127 of file CachedView.h.

◆ txRead()

tx_type ripple::detail::CachedViewImpl::txRead ( key_type const &  key) const
overridevirtual

Read a transaction from the tx map.

If the view represents an open ledger, the metadata object will be empty.

Returns
A pair of nullptr if the key is not found in the tx map.

Implements ripple::ReadView.

Definition at line 133 of file CachedView.h.

◆ digest()

std::optional< digest_type > ripple::detail::CachedViewImpl::digest ( key_type const &  key) const
overridevirtual

Return the digest associated with the key.

Returns
std::nullopt if the item does not exist.

Implements ripple::DigestAwareReadView.

Definition at line 143 of file CachedView.h.

◆ parentCloseTime()

NetClock::time_point ripple::ReadView::parentCloseTime ( ) const
inherited

Returns the close time of the previous ledger.

Definition at line 115 of file ReadView.h.

◆ seq()

LedgerIndex ripple::ReadView::seq ( ) const
inherited

Returns the sequence number of the base ledger.

Definition at line 122 of file ReadView.h.

◆ balanceHook()

virtual STAmount ripple::ReadView::balanceHook ( AccountID const &  account,
AccountID const &  issuer,
STAmount const &  amount 
) const
virtualinherited

Reimplemented in ripple::PaymentSandbox.

Definition at line 182 of file ReadView.h.

◆ ownerCountHook()

virtual std::uint32_t ripple::ReadView::ownerCountHook ( AccountID const &  account,
std::uint32_t  count 
) const
virtualinherited

Reimplemented in ripple::PaymentSandbox.

Definition at line 196 of file ReadView.h.

◆ slesUpperBound() [2/2]

virtual std::unique_ptr< sles_type::iter_base > ripple::ReadView::slesUpperBound ( key_type const &  key) const
pure virtualinherited

Member Data Documentation

◆ base_

DigestAwareReadView const& ripple::detail::CachedViewImpl::base_
private

Definition at line 38 of file CachedView.h.

◆ cache_

CachedSLEs& ripple::detail::CachedViewImpl::cache_
private

Definition at line 39 of file CachedView.h.

◆ mutex_

std::mutex ripple::detail::CachedViewImpl::mutex_
mutableprivate

Definition at line 40 of file CachedView.h.

◆ map_

std::unordered_map<key_type, uint256, hardened_hash<> > ripple::detail::CachedViewImpl::map_
mutableprivate

Definition at line 41 of file CachedView.h.

◆ sles

sles_type ripple::ReadView::sles
inherited

Iterable range of ledger state items.

Note
Visiting each state entry in the ledger can become quite expensive as the ledger grows.

Definition at line 249 of file ReadView.h.

◆ txs

txs_type ripple::ReadView::txs
inherited

Definition at line 252 of file ReadView.h.