rippled
Loading...
Searching...
No Matches
AccountTxPaging.cpp
1#include <xrpld/app/ledger/LedgerMaster.h>
2#include <xrpld/app/main/Application.h>
3#include <xrpld/app/misc/Transaction.h>
4#include <xrpld/app/misc/detail/AccountTxPaging.h>
5
6#include <xrpl/protocol/Serializer.h>
7
8namespace ripple {
9
10void
13 std::uint32_t ledger_index,
14 std::string const& status,
15 Blob const& rawTxn,
16 Blob const& rawMeta,
17 Application& app)
18{
19 SerialIter it(makeSlice(rawTxn));
20 auto txn = std::make_shared<STTx const>(it);
21 std::string reason;
22
23 auto tr = std::make_shared<Transaction>(txn, reason, app);
24
25 auto metaset = std::make_shared<TxMeta>(tr->getID(), ledger_index, rawMeta);
26
27 // if properly formed meta is available we can use it to generate ctid
28 if (metaset->getAsObject().isFieldPresent(sfTransactionIndex))
29 tr->setStatus(
31 ledger_index,
32 metaset->getAsObject().getFieldU32(sfTransactionIndex),
33 app.config().NETWORK_ID);
34 else
35 tr->setStatus(Transaction::sqlTransactionStatus(status), ledger_index);
36
37 to.emplace_back(std::move(tr), metaset);
38};
39
40void
42{
43 if (auto l = app.getLedgerMaster().getLedgerBySeq(seq))
44 pendSaveValidated(app, l, false, false);
45}
46
47} // namespace ripple
virtual Config & config()=0
virtual LedgerMaster & getLedgerMaster()=0
uint32_t NETWORK_ID
Definition Config.h:137
std::shared_ptr< Ledger const > getLedgerBySeq(std::uint32_t index)
static TransStatus sqlTransactionStatus(boost::optional< std::string > const &status)
T emplace_back(T... args)
T is_same_v
Use hash_* containers for keys that do not need a cryptographically secure hashing algorithm.
Definition algorithm.h:6
void saveLedgerAsync(Application &app, std::uint32_t seq)
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)
Definition Slice.h:225
void convertBlobsToTxResult(RelationalDatabase::AccountTxs &to, std::uint32_t ledger_index, std::string const &status, Blob const &rawTxn, Blob const &rawMeta, Application &app)
bool pendSaveValidated(Application &app, std::shared_ptr< Ledger const > const &ledger, bool isSynchronous, bool isCurrent)
Save, or arrange to save, a fully-validated ledger Returns false on error.
Definition Ledger.cpp:978