xrpld
Loading...
Searching...
No Matches
TxMeta.h
1#pragma once
2
3#include <xrpl/basics/Blob.h>
4#include <xrpl/basics/base_uint.h>
5#include <xrpl/json/json_value.h>
6#include <xrpl/protocol/AccountID.h>
7#include <xrpl/protocol/SField.h>
8#include <xrpl/protocol/STAmount.h>
9#include <xrpl/protocol/STArray.h>
10#include <xrpl/protocol/STBase.h>
11#include <xrpl/protocol/STLedgerEntry.h>
12#include <xrpl/protocol/STObject.h>
13#include <xrpl/protocol/Serializer.h>
14#include <xrpl/protocol/TER.h>
15
16#include <boost/container/flat_set.hpp>
17
18#include <cstdint>
19#include <optional>
20
21namespace xrpl {
22
23class TxMeta
24{
25public:
26 TxMeta(uint256 const& transactionID, std::uint32_t ledger);
27 TxMeta(uint256 const& txID, std::uint32_t ledger, Blob const&);
28 TxMeta(uint256 const& txID, std::uint32_t ledger, STObject const&);
29
30 [[nodiscard]] uint256 const&
31 getTxID() const
32 {
33 return transactionID_;
34 }
35 [[nodiscard]] std::uint32_t
36 getLgrSeq() const
37 {
38 return ledgerSeq_;
39 }
40 [[nodiscard]] int
41 getResult() const
42 {
43 return result_;
44 }
45 [[nodiscard]] TER
47 {
48 return TER::fromInt(result_);
49 }
50 [[nodiscard]] std::uint32_t
51 getIndex() const
52 {
53 return index_;
54 }
55
56 void
57 setAffectedNode(uint256 const&, SField const& type, std::uint16_t nodeType);
59 getAffectedNode(SLE::ref node, SField const& type); // create if needed
62
66 [[nodiscard]] boost::container::flat_set<AccountID>
67 getAffectedAccounts() const;
68
69 [[nodiscard]] json::Value
71 {
72 return getAsObject().getJson(p);
73 }
74 void
76
77 [[nodiscard]] STObject
78 getAsObject() const;
79 STArray&
81 {
82 return nodes_;
83 }
84 [[nodiscard]] STArray const&
85 getNodes() const
86 {
87 return nodes_;
88 }
89
90 void
92 {
93 if (obj.isFieldPresent(sfDeliveredAmount))
94 deliveredAmount_ = obj.getFieldAmount(sfDeliveredAmount);
95
96 if (obj.isFieldPresent(sfParentBatchID))
97 parentBatchID_ = obj.getFieldH256(sfParentBatchID);
98 }
99
100 [[nodiscard]] std::optional<STAmount> const&
102 {
103 return deliveredAmount_;
104 }
105
106 void
108 {
109 deliveredAmount_ = amount;
110 }
111
112 void
117
118private:
123
126
128};
129
130} // namespace xrpl
Represents a JSON value.
Definition json_value.h:117
Identifies fields.
Definition SField.h:132
std::shared_ptr< STLedgerEntry > const & ref
json::Value getJson(JsonOptions=JsonOptions::Values::None) const override
Definition STObject.cpp:845
bool isFieldPresent(SField const &field) const
Definition STObject.cpp:464
uint256 getFieldH256(SField const &field) const
Definition STObject.cpp:631
STAmount const & getFieldAmount(SField const &field) const
Definition STObject.cpp:657
static constexpr TERSubset fromInt(int from)
Definition TER.h:437
boost::container::flat_set< AccountID > getAffectedAccounts() const
Return a list of accounts affected by this transaction.
Definition TxMeta.cpp:85
uint256 transactionID_
Definition TxMeta.h:119
void setDeliveredAmount(std::optional< STAmount > const &amount)
Definition TxMeta.h:107
TER getResultTER() const
Definition TxMeta.h:46
STArray const & getNodes() const
Definition TxMeta.h:85
void setAffectedNode(uint256 const &, SField const &type, std::uint16_t nodeType)
Definition TxMeta.cpp:63
json::Value getJson(JsonOptions p) const
Definition TxMeta.h:70
std::uint32_t getIndex() const
Definition TxMeta.h:51
void setAdditionalFields(STObject const &obj)
Definition TxMeta.h:91
std::optional< uint256 > parentBatchID_
Definition TxMeta.h:125
std::optional< STAmount > deliveredAmount_
Definition TxMeta.h:124
std::optional< STAmount > const & getDeliveredAmount() const
Definition TxMeta.h:101
STArray nodes_
Definition TxMeta.h:127
int result_
Definition TxMeta.h:122
uint256 const & getTxID() const
Definition TxMeta.h:31
std::uint32_t getLgrSeq() const
Definition TxMeta.h:36
STObject & getAffectedNode(SLE::ref node, SField const &type)
Definition TxMeta.cpp:149
void addRaw(Serializer &, TER, std::uint32_t index)
Definition TxMeta.cpp:201
STObject getAsObject() const
Definition TxMeta.cpp:184
STArray & getNodes()
Definition TxMeta.h:80
std::uint32_t index_
Definition TxMeta.h:121
void setParentBatchID(std::optional< uint256 > const &id)
Definition TxMeta.h:113
std::uint32_t ledgerSeq_
Definition TxMeta.h:120
TxMeta(uint256 const &transactionID, std::uint32_t ledger)
Definition TxMeta.cpp:52
int getResult() const
Definition TxMeta.h:41
Use hash_* containers for keys that do not need a cryptographically secure hashing algorithm.
Definition algorithm.h:5
TERSubset< CanCvtToTER > TER
Definition TER.h:647
std::vector< unsigned char > Blob
Storage for linear binary data.
Definition Blob.h:11
BaseUInt< 256 > uint256
Definition base_uint.h:580
Note, should be treated as flags that can be | and &.
Definition STBase.h:22