Clio  develop
The XRP Ledger API server.
Loading...
Searching...
No Matches
data::cassandra::BasicCassandraBackend< SettingsProviderType, ExecutionStrategyType, FetchLedgerCacheType > Class Template Reference

Implements CassandraBackendFamily for Cassandra/ScyllaDB. More...

#include <CassandraBackend.hpp>

Inheritance diagram for data::cassandra::BasicCassandraBackend< SettingsProviderType, ExecutionStrategyType, FetchLedgerCacheType >:
Collaboration diagram for data::cassandra::BasicCassandraBackend< SettingsProviderType, ExecutionStrategyType, FetchLedgerCacheType >:

Public Member Functions

 BasicCassandraBackend (BasicCassandraBackend &&)=delete
bool doFinishWrites () override
 The implementation should wait for all pending writes to finish.
NFTsAndCursor fetchNFTsByIssuer (ripple::AccountID const &issuer, std::optional< std::uint32_t > const &taxon, std::uint32_t const ledgerSequence, std::uint32_t const limit, std::optional< ripple::uint256 > const &cursorIn, boost::asio::yield_context yield) const override
 Fetches all NFTs issued by a given address.
std::vector< ripple::uint256 > fetchAccountRoots (std::uint32_t number, std::uint32_t pageSize, std::uint32_t seq, boost::asio::yield_context yield) const override
 Fetch the specified number of account root object indexes by page, the accounts need to exist for seq.
Public Member Functions inherited from data::cassandra::CassandraBackendFamily< SettingsProviderType, ExecutionStrategyType, CassandraSchema< SettingsProviderType >, FetchLedgerCache >
 CassandraBackendFamily (SettingsProviderType settingsProvider, data::LedgerCacheInterface &cache, bool readOnly)
 Create a new cassandra/scylla backend instance.
TransactionsAndCursor fetchAccountTransactions (ripple::AccountID const &account, std::uint32_t const limit, bool forward, std::optional< TransactionsCursor > const &txnCursor, boost::asio::yield_context yield) const override
 Fetches all transactions for a specific account.
void waitForWritesToFinish () override
 Wait for all pending writes to finish.
void writeLedger (ripple::LedgerHeader const &ledgerHeader, std::string &&blob) override
 Writes to a specific ledger.
std::optional< std::uint32_t > fetchLatestLedgerSequence (boost::asio::yield_context yield) const override
 Fetches the latest ledger sequence.
std::optional< ripple::LedgerHeader > fetchLedgerBySequence (std::uint32_t const sequence, boost::asio::yield_context yield) const override
 Fetches a specific ledger by sequence number.
std::optional< ripple::LedgerHeader > fetchLedgerByHash (ripple::uint256 const &hash, boost::asio::yield_context yield) const override
 Fetches a specific ledger by hash.
std::optional< LedgerRangehardFetchLedgerRange (boost::asio::yield_context yield) const override
 Fetches the ledger range from DB.
std::vector< TransactionAndMetadatafetchAllTransactionsInLedger (std::uint32_t const ledgerSequence, boost::asio::yield_context yield) const override
 Fetches all transactions from a specific ledger.
std::vector< ripple::uint256 > fetchAllTransactionHashesInLedger (std::uint32_t const ledgerSequence, boost::asio::yield_context yield) const override
 Fetches all transaction hashes from a specific ledger.
std::optional< NFTfetchNFT (ripple::uint256 const &tokenID, std::uint32_t const ledgerSequence, boost::asio::yield_context yield) const override
 Fetches a specific NFT.
TransactionsAndCursor fetchNFTTransactions (ripple::uint256 const &tokenID, std::uint32_t const limit, bool const forward, std::optional< TransactionsCursor > const &cursorIn, boost::asio::yield_context yield) const override
 Fetches all transactions for a specific NFT.
MPTHoldersAndCursor fetchMPTHolders (ripple::uint192 const &mptID, std::uint32_t const limit, std::optional< ripple::AccountID > const &cursorIn, std::uint32_t const ledgerSequence, boost::asio::yield_context yield) const override
 Fetches all holders' balances for a MPTIssuanceID.
std::optional< Blob > doFetchLedgerObject (ripple::uint256 const &key, std::uint32_t const sequence, boost::asio::yield_context yield) const override
 The database-specific implementation for fetching a ledger object.
std::optional< std::uint32_t > doFetchLedgerObjectSeq (ripple::uint256 const &key, std::uint32_t const sequence, boost::asio::yield_context yield) const override
 The database-specific implementation for fetching a ledger object sequence.
std::optional< TransactionAndMetadatafetchTransaction (ripple::uint256 const &hash, boost::asio::yield_context yield) const override
 Fetches a specific transaction.
std::optional< ripple::uint256 > doFetchSuccessorKey (ripple::uint256 key, std::uint32_t const ledgerSequence, boost::asio::yield_context yield) const override
 Database-specific implementation of fetching the successor key.
std::vector< TransactionAndMetadatafetchTransactions (std::vector< ripple::uint256 > const &hashes, boost::asio::yield_context yield) const override
 Fetches multiple transactions.
std::vector< Blob > doFetchLedgerObjects (std::vector< ripple::uint256 > const &keys, std::uint32_t const sequence, boost::asio::yield_context yield) const override
 The database-specific implementation for fetching ledger objects.
std::vector< LedgerObjectfetchLedgerDiff (std::uint32_t const ledgerSequence, boost::asio::yield_context yield) const override
 Returns the difference between ledgers.
std::optional< std::string > fetchMigratorStatus (std::string const &migratorName, boost::asio::yield_context yield) const override
 Fetches the status of migrator by name.
std::expected< std::vector< std::pair< boost::uuids::uuid, std::string > >, std::string > fetchClioNodesData (boost::asio::yield_context yield) const override
 Fetches the data of all nodes in the cluster.
void doWriteLedgerObject (std::string &&key, std::uint32_t const seq, std::string &&blob) override
 Writes a ledger object to the database.
void writeSuccessor (std::string &&key, std::uint32_t const seq, std::string &&successor) override
 Write a new successor.
void writeAccountTransactions (std::vector< AccountTransactionsData > data) override
 Write a new set of account transactions.
void writeAccountTransaction (AccountTransactionsData record) override
 Write a new account transaction.
void writeNFTTransactions (std::vector< NFTTransactionsData > const &data) override
 Write NFTs transactions.
void writeTransaction (std::string &&hash, std::uint32_t const seq, std::uint32_t const date, std::string &&transaction, std::string &&metadata) override
 Writes a new transaction.
void writeNFTs (std::vector< NFTsData > const &data) override
 Writes NFTs to the database.
void writeMPTHolders (std::vector< MPTHolderData > const &data) override
 Write accounts that started holding onto a MPT.
void startWrites () const override
 Starts a write transaction with the DB. No-op for cassandra.
void writeMigratorStatus (std::string const &migratorName, std::string const &status) override
 Mark the migration status of a migrator as Migrated in the database.
void writeNodeMessage (boost::uuids::uuid const &uuid, std::string message) override
 Write a node message. Used by ClusterCommunicationService.
bool isTooBusy () const override
boost::json::object stats () const override
Public Member Functions inherited from data::BackendInterface
 BackendInterface (LedgerCacheInterface &cache)
 Construct a new backend interface instance.
LedgerCacheInterface const & cache () const
LedgerCacheInterfacecache ()
void setCorruptionDetector (etl::CorruptionDetector detector)
 Sets the corruption detector.
std::optional< LedgerRangefetchLedgerRange () const
 Fetch the current ledger range.
void updateRange (uint32_t newMax)
 Updates the range of sequences that are stored in the DB.
void setRange (uint32_t min, uint32_t max, bool force=false)
 Sets the range of sequences that are stored in the DB.
std::optional< ripple::Fees > fetchFees (std::uint32_t seq, boost::asio::yield_context yield) const
 Fetch the fees from a specific ledger sequence.
std::optional< Blob > fetchLedgerObject (ripple::uint256 const &key, std::uint32_t sequence, boost::asio::yield_context yield) const
 Fetches a specific ledger object.
std::optional< std::uint32_t > fetchLedgerObjectSeq (ripple::uint256 const &key, std::uint32_t sequence, boost::asio::yield_context yield) const
 Fetches a specific ledger object sequence.
std::vector< Blob > fetchLedgerObjects (std::vector< ripple::uint256 > const &keys, std::uint32_t sequence, boost::asio::yield_context yield) const
 Fetches all ledger objects by their keys.
LedgerPage fetchLedgerPage (std::optional< ripple::uint256 > const &cursor, std::uint32_t ledgerSequence, std::uint32_t limit, bool outOfOrder, boost::asio::yield_context yield)
 Fetches a page of ledger objects, ordered by key/index.
std::optional< LedgerObjectfetchSuccessorObject (ripple::uint256 key, std::uint32_t ledgerSequence, boost::asio::yield_context yield) const
 Fetches the successor object.
std::optional< ripple::uint256 > fetchSuccessorKey (ripple::uint256 key, std::uint32_t ledgerSequence, boost::asio::yield_context yield) const
 Fetches the successor key.
BookOffersPage fetchBookOffers (ripple::uint256 const &book, std::uint32_t ledgerSequence, std::uint32_t limit, boost::asio::yield_context yield) const
 Fetches book offers.
std::optional< LedgerRangehardFetchLedgerRange () const
 Synchronously fetches the ledger range from DB.
std::optional< LedgerRangehardFetchLedgerRangeNoThrow () const
 Fetches the ledger range from DB retrying until no DatabaseTimeout is thrown.
virtual void writeLedgerObject (std::string &&key, std::uint32_t seq, std::string &&blob)
 Writes a new ledger object.
bool finishWrites (std::uint32_t ledgerSequence)
 Tells database we finished writing all data for a specific ledger.

Protected Attributes

ExecutionStrategyType executor_
std::atomic_uint32_t ledgerSequence_
util::Logger log_
CassandraSchema< SettingsProviderType > schema_
Protected Attributes inherited from data::cassandra::CassandraBackendFamily< SettingsProviderType, ExecutionStrategyType, CassandraSchema< SettingsProviderType >, FetchLedgerCache >
util::Logger log_
SettingsProviderType settingsProvider_
CassandraSchema< SettingsProviderType > schema_
std::atomic_uint32_t ledgerSequence_
Handle handle_
ExecutionStrategyType executor_
FetchLedgerCache ledgerCache_
Protected Attributes inherited from data::BackendInterface
util::Logger log_ {"Backend"}
std::shared_mutex rngMtx_
std::optional< LedgerRangerange_
std::reference_wrapper< LedgerCacheInterfacecache_
std::optional< etl::CorruptionDetectorcorruptionDetector_

Additional Inherited Members

Public Types inherited from data::BackendInterface
using ClioNodesDataFetchResult
 Return type for fetchClioNodesData() method.
Protected Member Functions inherited from data::cassandra::CassandraBackendFamily< SettingsProviderType, ExecutionStrategyType, CassandraSchema< SettingsProviderType >, FetchLedgerCache >
bool executeSyncUpdate (Statement statement)
 Executes statements and tries to write to DB.

Detailed Description

template<SomeSettingsProvider SettingsProviderType, SomeExecutionStrategy ExecutionStrategyType, typename FetchLedgerCacheType = FetchLedgerCache>
class data::cassandra::BasicCassandraBackend< SettingsProviderType, ExecutionStrategyType, FetchLedgerCacheType >

Implements CassandraBackendFamily for Cassandra/ScyllaDB.

Template Parameters
SettingsProviderTypeThe settings provider type to use
ExecutionStrategyTypeThe execution strategy type to use
FetchLedgerCacheTypeThe ledger header cache type to use

Member Function Documentation

◆ doFinishWrites()

template<SomeSettingsProvider SettingsProviderType, SomeExecutionStrategy ExecutionStrategyType, typename FetchLedgerCacheType = FetchLedgerCache>
bool data::cassandra::BasicCassandraBackend< SettingsProviderType, ExecutionStrategyType, FetchLedgerCacheType >::doFinishWrites ( )
inlineoverridevirtual

The implementation should wait for all pending writes to finish.

Returns
true on success; false otherwise

Implements data::BackendInterface.

◆ fetchAccountRoots()

template<SomeSettingsProvider SettingsProviderType, SomeExecutionStrategy ExecutionStrategyType, typename FetchLedgerCacheType = FetchLedgerCache>
std::vector< ripple::uint256 > data::cassandra::BasicCassandraBackend< SettingsProviderType, ExecutionStrategyType, FetchLedgerCacheType >::fetchAccountRoots ( std::uint32_t number,
std::uint32_t pageSize,
std::uint32_t seq,
boost::asio::yield_context yield ) const
inlineoverridevirtual

Fetch the specified number of account root object indexes by page, the accounts need to exist for seq.

Parameters
numberThe number of accounts to fetch
pageSizeThe maximum number of accounts per page
seqThe accounts need to exist for this sequence
yieldThe coroutine context
Returns
A vector of ripple::uint256 representing the account roots

Implements data::BackendInterface.

◆ fetchNFTsByIssuer()

template<SomeSettingsProvider SettingsProviderType, SomeExecutionStrategy ExecutionStrategyType, typename FetchLedgerCacheType = FetchLedgerCache>
NFTsAndCursor data::cassandra::BasicCassandraBackend< SettingsProviderType, ExecutionStrategyType, FetchLedgerCacheType >::fetchNFTsByIssuer ( ripple::AccountID const & issuer,
std::optional< std::uint32_t > const & taxon,
std::uint32_t const ledgerSequence,
std::uint32_t const limit,
std::optional< ripple::uint256 > const & cursorIn,
boost::asio::yield_context yield ) const
inlineoverridevirtual

Fetches all NFTs issued by a given address.

Parameters
issuerAccountID of issuer you wish you query.
taxonOptional taxon of NFTs by which you wish to filter.
ledgerSequenceThe ledger sequence to fetch for
limitPaging limit.
cursorInOptional cursor to allow us to pick up from where we last left off.
yieldCurrently executing coroutine.
Returns
NFTs issued by this account, or this issuer/taxon combination if taxon is passed and an optional marker

Implements data::BackendInterface.


The documentation for this class was generated from the following file: