1#include <xrpld/app/ledger/LedgerMaster.h>
2#include <xrpld/app/main/Application.h>
3#include <xrpld/app/misc/HashRouter.h>
4#include <xrpld/app/misc/Transaction.h>
5#include <xrpld/app/rdb/backend/SQLiteDatabase.h>
6#include <xrpld/app/tx/apply.h>
7#include <xrpld/rpc/CTID.h>
9#include <xrpl/basics/safe_cast.h>
10#include <xrpl/protocol/ErrorCodes.h>
11#include <xrpl/protocol/jss.h>
19 : mTransaction(stx), mApp(app), j_(app.journal(
"Ledger"))
23 mTransactionID = mTransaction->getTransactionID();
56 char const c = (status) ? (*status)[0] : safe_cast<char>(
txnSqlUnknown);
74 "ripple::Transaction::sqlTransactionStatus : unknown transaction "
81 boost::optional<std::uint64_t>
const& ledgerSeq,
82 boost::optional<std::string>
const& status,
87 rangeCheckedCast<std::uint32_t>(ledgerSeq.value_or(0));
95 tr->setLedger(inLedger);
134 Throw<std::runtime_error>(
"Failed to get relational database");
137 return db->getTransaction(
id,
range, ec);
165 ret[jss::date] = ct->time_since_epoch().count();
179 ret[jss::ctid] = *ctid;
virtual LedgerMaster & getLedgerMaster()=0
virtual RelationalDatabase & getRelationalDatabase()=0
std::optional< NetClock::time_point > getCloseTimeBySeq(LedgerIndex ledgerIndex)
static Transaction::pointer transactionFromSQL(boost::optional< std::uint64_t > const &ledgerSeq, boost::optional< std::string > const &status, Blob const &rawTxn, Application &app)
Transaction(std::shared_ptr< STTx const > const &, std::string &, Application &) noexcept
std::optional< uint32_t > mNetworkID
std::optional< uint32_t > mTxnSeq
static std::variant< std::pair< std::shared_ptr< Transaction >, std::shared_ptr< TxMeta > >, TxSearched > load(uint256 const &id, Application &app, error_code_i &ec)
void setStatus(TransStatus status, std::uint32_t ledgerSeq, std::optional< uint32_t > transactionSeq=std::nullopt, std::optional< uint32_t > networkID=std::nullopt)
static TransStatus sqlTransactionStatus(boost::optional< std::string > const &status)
Json::Value getJson(JsonOptions options, bool binary=false) const
std::shared_ptr< STTx const > mTransaction
std::optional< std::string > encodeCTID(uint32_t ledgerSeq, uint32_t txnIndex, uint32_t networkID) noexcept
Encodes ledger sequence, transaction index, and network ID into a CTID string.
Use hash_* containers for keys that do not need a cryptographically secure hashing algorithm.
boost::icl::closed_interval< T > ClosedInterval
A closed interval over the domain T.
std::enable_if_t< std::is_same< T, char >::value||std::is_same< T, unsigned char >::value, Slice > makeSlice(std::array< T, N > const &a)
ClosedInterval< T > range(T low, T high)
Create a closed range interval.
Note, should be treated as flags that can be | and &.