xrpld
Toggle main menu visibility
Loading...
Searching...
No Matches
libxrpl
tx
transactors
dex
OfferCancel.cpp
1
#include <xrpl/tx/transactors/dex/OfferCancel.h>
2
3
#include <xrpl/basics/Log.h>
4
#include <xrpl/ledger/helpers/OfferHelpers.h>
5
#include <xrpl/protocol/Indexes.h>
6
#include <xrpl/protocol/SField.h>
7
#include <xrpl/protocol/STLedgerEntry.h>
8
#include <xrpl/protocol/STTx.h>
9
#include <xrpl/protocol/SeqProxy.h>
10
#include <xrpl/protocol/TER.h>
11
#include <xrpl/protocol/XRPAmount.h>
12
#include <xrpl/tx/Transactor.h>
13
14
namespace
xrpl
{
15
16
NotTEC
17
OfferCancel::preflight
(
PreflightContext
const
& ctx)
18
{
19
if
(ctx.
tx
[sfOfferSequence] == 0u)
20
{
21
JLOG(ctx.
j
.
trace
()) <<
"OfferCancel::preflight: missing sequence"
;
22
return
temBAD_SEQUENCE
;
23
}
24
25
return
tesSUCCESS
;
26
}
27
28
//------------------------------------------------------------------------------
29
30
TER
31
OfferCancel::preclaim
(
PreclaimContext
const
& ctx)
32
{
33
auto
const
id
= ctx.
tx
[sfAccount];
34
auto
const
offerSequence = ctx.
tx
[sfOfferSequence];
35
36
auto
const
sle = ctx.
view
.
read
(
keylet::account
(
id
));
37
if
(!sle)
38
return
terNO_ACCOUNT
;
39
40
if
((*sle)[sfSequence] <= offerSequence)
41
{
42
JLOG(ctx.
j
.
trace
()) <<
"Malformed transaction: "
43
<<
"Sequence "
<< offerSequence <<
" is invalid."
;
44
return
temBAD_SEQUENCE
;
45
}
46
47
return
tesSUCCESS
;
48
}
49
50
//------------------------------------------------------------------------------
51
52
TER
53
OfferCancel::doApply
()
54
{
55
auto
const
offerSequence =
ctx_
.tx[sfOfferSequence];
56
57
auto
const
sle =
view
().
read
(
keylet::account
(
accountID_
));
58
if
(!sle)
59
return
tefINTERNAL
;
// LCOV_EXCL_LINE
60
61
auto
const
seqProxy =
SeqProxy::rawSequence
(offerSequence);
62
if
(
auto
sleOffer =
view
().peek(
keylet::offer
(
accountID_
, seqProxy)))
63
{
64
JLOG(
j_
.debug()) <<
"Trying to cancel offer #"
<< offerSequence;
65
return
offerDelete
(
view
(), sleOffer,
ctx_
.registry.get().getJournal(
"View"
));
66
}
67
68
JLOG(
j_
.debug()) <<
"Offer #"
<< offerSequence <<
" can't be found."
;
69
return
tesSUCCESS
;
70
}
71
72
void
73
OfferCancel::visitInvariantEntry
(
bool
,
SLE::ConstRef
,
SLE::ConstRef
)
74
{
75
// No transaction-specific invariants yet (future work).
76
}
77
78
bool
79
OfferCancel::finalizeInvariants
(
STTx
const
&,
TER
,
XRPAmount
,
ReadView
const
&,
beast::Journal
const
&)
80
{
81
// No transaction-specific invariants yet (future work).
82
return
true
;
83
}
84
85
}
// namespace xrpl
beast::Journal
A generic endpoint for log messages.
Definition
Journal.h:44
beast::Journal::trace
Stream trace() const
Severity stream access functions.
Definition
Journal.h:338
xrpl::OfferCancel::preclaim
static TER preclaim(PreclaimContext const &ctx)
Definition
OfferCancel.cpp:31
xrpl::OfferCancel::doApply
TER doApply() override
Definition
OfferCancel.cpp:53
xrpl::OfferCancel::visitInvariantEntry
void visitInvariantEntry(bool isDelete, SLE::ConstRef before, SLE::ConstRef after) override
Inspect a single ledger entry modified by this transaction.
Definition
OfferCancel.cpp:73
xrpl::OfferCancel::finalizeInvariants
bool finalizeInvariants(STTx const &tx, TER result, XRPAmount fee, ReadView const &view, beast::Journal const &j) override
Check transaction-specific post-conditions after all entries have been visited.
Definition
OfferCancel.cpp:79
xrpl::OfferCancel::preflight
static NotTEC preflight(PreflightContext const &ctx)
Definition
OfferCancel.cpp:17
xrpl::ReadView
A view into a ledger.
Definition
ReadView.h:41
xrpl::ReadView::read
virtual SLE::const_pointer read(Keylet const &k) const =0
Return the state item associated with a key.
xrpl::STLedgerEntry::ConstRef
std::shared_ptr< STLedgerEntry const > const & ConstRef
Definition
STLedgerEntry.h:37
xrpl::STTx
Definition
STTx.h:43
xrpl::SeqProxy::rawSequence
static constexpr SeqProxy rawSequence(std::uint32_t v)
Factory function to return a sequence-based SeqProxy.
Definition
SeqProxy.h:62
xrpl::Transactor::j_
beast::Journal const j_
Definition
Transactor.h:164
xrpl::Transactor::view
ApplyView & view()
Definition
Transactor.h:184
xrpl::Transactor::accountID_
AccountID const accountID_
Definition
Transactor.h:166
xrpl::Transactor::ctx_
ApplyContext & ctx_
Definition
Transactor.h:162
xrpl::XRPAmount
Definition
XRPAmount.h:28
xrpl::keylet::offer
Keylet offer(AccountID const &id, SeqProxy const &seq) noexcept
An offer from an account.
Definition
Indexes.cpp:298
xrpl::keylet::account
Keylet account(AccountID const &id) noexcept
AccountID root.
Definition
Indexes.cpp:220
xrpl
Use hash_* containers for keys that do not need a cryptographically secure hashing algorithm.
Definition
algorithm.h:5
xrpl::terNO_ACCOUNT
@ terNO_ACCOUNT
Definition
TER.h:218
xrpl::offerDelete
TER offerDelete(ApplyView &view, SLE::Ref sle, beast::Journal j)
Delete an offer.
Definition
OfferHelpers.cpp:18
xrpl::tefINTERNAL
@ tefINTERNAL
Definition
TER.h:168
xrpl::NotTEC
TERSubset< CanCvtToNotTEC > NotTEC
Definition
TER.h:614
xrpl::temBAD_SEQUENCE
@ temBAD_SEQUENCE
Definition
TER.h:92
xrpl::TER
TERSubset< CanCvtToTER > TER
Definition
TER.h:654
xrpl::tesSUCCESS
@ tesSUCCESS
Definition
TER.h:250
xrpl::PreclaimContext
State information when determining if a tx is likely to claim a fee.
Definition
Transactor.h:92
xrpl::PreclaimContext::view
ReadView const & view
Definition
Transactor.h:95
xrpl::PreclaimContext::tx
STTx const & tx
Definition
Transactor.h:98
xrpl::PreclaimContext::j
beast::Journal const j
Definition
Transactor.h:100
xrpl::PreflightContext
State information when preflighting a tx.
Definition
Transactor.h:39
xrpl::PreflightContext::j
beast::Journal const j
Definition
Transactor.h:46
xrpl::PreflightContext::tx
STTx const & tx
Definition
Transactor.h:42
Generated by
1.17.0