rippled
Loading...
Searching...
No Matches
Public Types | Public Member Functions | Static Public Member Functions | Static Public Attributes | Protected Member Functions | Static Protected Member Functions | Protected Attributes | Private Member Functions | Static Private Member Functions | Private Attributes | List of all members
ripple::CreateOffer Class Reference

Transactor specialized for creating offers in the ledger. More...

#include <CreateOffer.h>

Inheritance diagram for ripple::CreateOffer:
Inheritance graph
[legend]
Collaboration diagram for ripple::CreateOffer:
Collaboration graph
[legend]

Public Types

enum  ConsequencesFactoryType { Normal , Blocker , Custom }
 

Public Member Functions

 CreateOffer (ApplyContext &ctx)
 Construct a Transactor subclass that creates an offer in the ledger. More...
 
void preCompute () override
 Gather information beyond what the Transactor base class gathers. More...
 
TER doApply () override
 Precondition: fee collection is likely. More...
 
ApplyResult operator() ()
 Process the transaction. More...
 
ApplyViewview ()
 
ApplyView const & view () const
 

Static Public Member Functions

static TxConsequences makeTxConsequences (PreflightContext const &ctx)
 
static NotTEC preflight (PreflightContext const &ctx)
 Enforce constraints beyond those of the Transactor base class. More...
 
static TER preclaim (PreclaimContext const &ctx)
 Enforce constraints beyond those of the Transactor base class. More...
 
static NotTEC checkSeqProxy (ReadView const &view, STTx const &tx, beast::Journal j)
 
static NotTEC checkPriorTxAndLastLedger (PreclaimContext const &ctx)
 
static TER checkFee (PreclaimContext const &ctx, XRPAmount baseFee)
 
static NotTEC checkSign (PreclaimContext const &ctx)
 
static NotTEC checkBatchSign (PreclaimContext const &ctx)
 
static XRPAmount calculateBaseFee (ReadView const &view, STTx const &tx)
 
static TER checkPermission (ReadView const &view, STTx const &tx)
 
static TER ticketDelete (ApplyView &view, AccountID const &account, uint256 const &ticketIndex, beast::Journal j)
 

Static Public Attributes

static constexpr ConsequencesFactoryType ConsequencesFactory {Custom}
 

Protected Member Functions

TER apply ()
 

Static Protected Member Functions

static XRPAmount minimumFee (Application &app, XRPAmount baseFee, Fees const &fees, ApplyFlags flags)
 Compute the minimum fee required to process a transaction with a given baseFee based on the current server load. More...
 

Protected Attributes

ApplyContextctx_
 
beast::Journal const j_
 
AccountID const account_
 
XRPAmount mPriorBalance
 
XRPAmount mSourceBalance
 

Private Member Functions

std::pair< TER, bool > applyGuts (Sandbox &view, Sandbox &view_cancel)
 
bool dry_offer (ApplyView &view, Offer const &offer)
 
std::pair< TER, Amounts > bridged_cross (Taker &taker, ApplyView &view, ApplyView &view_cancel, NetClock::time_point const when)
 
std::pair< TER, Amounts > direct_cross (Taker &taker, ApplyView &view, ApplyView &view_cancel, NetClock::time_point const when)
 
bool reachedOfferCrossingLimit (Taker const &taker) const
 
std::pair< TER, Amounts > takerCross (Sandbox &sb, Sandbox &sbCancel, Amounts const &takerAmount)
 
std::pair< TER, Amounts > flowCross (PaymentSandbox &psb, PaymentSandbox &psbCancel, Amounts const &takerAmount, std::optional< uint256 > const &domainID)
 
std::pair< TER, Amounts > cross (Sandbox &sb, Sandbox &sbCancel, Amounts const &takerAmount, std::optional< uint256 > const &domainID)
 
TER applyHybrid (Sandbox &sb, std::shared_ptr< STLedgerEntry > sleOffer, Keylet const &offer_index, STAmount const &saTakerPays, STAmount const &saTakerGets, std::function< void(SLE::ref, std::optional< uint256 >)> const &setDir)
 
std::pair< TER, XRPAmountreset (XRPAmount fee)
 Reset the context, discarding any changes made and adjust the fee. More...
 
TER consumeSeqProxy (SLE::pointer const &sleAccount)
 
TER payFee ()
 
void trapTransaction (uint256) const
 

Static Private Member Functions

static TER checkAcceptAsset (ReadView const &view, ApplyFlags const flags, AccountID const id, beast::Journal const j, Issue const &issue)
 
static std::pair< bool, Quality > select_path (bool have_direct, OfferStream const &direct, bool have_bridge, OfferStream const &leg1, OfferStream const &leg2)
 
static bool step_account (OfferStream &stream, Taker const &taker)
 
static std::string format_amount (STAmount const &amount)
 
static NotTEC checkSingleSign (AccountID const &idSigner, AccountID const &idAccount, std::shared_ptr< SLE const > sleAccount, Rules const &rules, beast::Journal j)
 
static NotTEC checkMultiSign (ReadView const &view, AccountID const &idAccount, STArray const &txSigners, ApplyFlags const &flags, beast::Journal j)
 

Private Attributes

CrossType cross_type_
 
OfferStream::StepCounter stepCounter_
 

Detailed Description

Transactor specialized for creating offers in the ledger.

Definition at line 33 of file CreateOffer.h.

Member Enumeration Documentation

◆ ConsequencesFactoryType

Enumerator
Normal 
Blocker 
Custom 

Definition at line 153 of file Transactor.h.

Constructor & Destructor Documentation

◆ CreateOffer()

ripple::CreateOffer::CreateOffer ( ApplyContext ctx)
explicit

Construct a Transactor subclass that creates an offer in the ledger.

Definition at line 39 of file CreateOffer.h.

Member Function Documentation

◆ makeTxConsequences()

TxConsequences ripple::CreateOffer::makeTxConsequences ( PreflightContext const &  ctx)
static

Definition at line 36 of file CreateOffer.cpp.

◆ preflight()

NotTEC ripple::CreateOffer::preflight ( PreflightContext const &  ctx)
static

Enforce constraints beyond those of the Transactor base class.

Definition at line 47 of file CreateOffer.cpp.

◆ preclaim()

TER ripple::CreateOffer::preclaim ( PreclaimContext const &  ctx)
static

Enforce constraints beyond those of the Transactor base class.

Definition at line 149 of file CreateOffer.cpp.

◆ preCompute()

void ripple::CreateOffer::preCompute ( )
overridevirtual

Gather information beyond what the Transactor base class gathers.

Reimplemented from ripple::Transactor.

Definition at line 976 of file CreateOffer.cpp.

◆ doApply()

TER ripple::CreateOffer::doApply ( )
overridevirtual

Precondition: fee collection is likely.

Attempt to create the offer.

Implements ripple::Transactor.

Definition at line 1390 of file CreateOffer.cpp.

◆ applyGuts()

std::pair< TER, bool > ripple::CreateOffer::applyGuts ( Sandbox view,
Sandbox view_cancel 
)
private

Definition at line 1038 of file CreateOffer.cpp.

◆ checkAcceptAsset()

TER ripple::CreateOffer::checkAcceptAsset ( ReadView const &  view,
ApplyFlags const  flags,
AccountID const  id,
beast::Journal const  j,
Issue const &  issue 
)
staticprivate

Definition at line 234 of file CreateOffer.cpp.

◆ dry_offer()

bool ripple::CreateOffer::dry_offer ( ApplyView view,
Offer const &  offer 
)
private

Definition at line 321 of file CreateOffer.cpp.

◆ select_path()

std::pair< bool, Quality > ripple::CreateOffer::select_path ( bool  have_direct,
OfferStream const &  direct,
bool  have_bridge,
OfferStream const &  leg1,
OfferStream const &  leg2 
)
staticprivate

Definition at line 335 of file CreateOffer.cpp.

◆ bridged_cross()

std::pair< TER, Amounts > ripple::CreateOffer::bridged_cross ( Taker taker,
ApplyView view,
ApplyView view_cancel,
NetClock::time_point const  when 
)
private

Definition at line 381 of file CreateOffer.cpp.

◆ direct_cross()

std::pair< TER, Amounts > ripple::CreateOffer::direct_cross ( Taker taker,
ApplyView view,
ApplyView view_cancel,
NetClock::time_point const  when 
)
private

Definition at line 574 of file CreateOffer.cpp.

◆ step_account()

bool ripple::CreateOffer::step_account ( OfferStream stream,
Taker const &  taker 
)
staticprivate

Definition at line 669 of file CreateOffer.cpp.

◆ reachedOfferCrossingLimit()

bool ripple::CreateOffer::reachedOfferCrossingLimit ( Taker const &  taker) const
private

Definition at line 370 of file CreateOffer.cpp.

◆ takerCross()

std::pair< TER, Amounts > ripple::CreateOffer::takerCross ( Sandbox sb,
Sandbox sbCancel,
Amounts const &  takerAmount 
)
private

Definition at line 692 of file CreateOffer.cpp.

◆ flowCross()

std::pair< TER, Amounts > ripple::CreateOffer::flowCross ( PaymentSandbox psb,
PaymentSandbox psbCancel,
Amounts const &  takerAmount,
std::optional< uint256 > const &  domainID 
)
private

Definition at line 737 of file CreateOffer.cpp.

◆ cross()

std::pair< TER, Amounts > ripple::CreateOffer::cross ( Sandbox sb,
Sandbox sbCancel,
Amounts const &  takerAmount,
std::optional< uint256 > const &  domainID 
)
private

Definition at line 941 of file CreateOffer.cpp.

◆ format_amount()

std::string ripple::CreateOffer::format_amount ( STAmount const &  amount)
staticprivate

Definition at line 967 of file CreateOffer.cpp.

◆ applyHybrid()

TER ripple::CreateOffer::applyHybrid ( Sandbox sb,
std::shared_ptr< STLedgerEntry sleOffer,
Keylet const &  offer_index,
STAmount const &  saTakerPays,
STAmount const &  saTakerGets,
std::function< void(SLE::ref, std::optional< uint256 >)> const &  setDir 
)
private

Definition at line 990 of file CreateOffer.cpp.

◆ operator()()

ApplyResult ripple::Transactor::operator() ( )
inherited

Process the transaction.

Definition at line 1061 of file Transactor.cpp.

◆ view() [1/2]

ApplyView & ripple::Transactor::view ( )
inherited

Definition at line 159 of file Transactor.h.

◆ view() [2/2]

ApplyView const & ripple::Transactor::view ( ) const
inherited

Definition at line 165 of file Transactor.h.

◆ checkSeqProxy()

NotTEC ripple::Transactor::checkSeqProxy ( ReadView const &  view,
STTx const &  tx,
beast::Journal  j 
)
staticinherited

Definition at line 358 of file Transactor.cpp.

◆ checkPriorTxAndLastLedger()

NotTEC ripple::Transactor::checkPriorTxAndLastLedger ( PreclaimContext const &  ctx)
staticinherited

Definition at line 430 of file Transactor.cpp.

◆ checkFee()

TER ripple::Transactor::checkFee ( PreclaimContext const &  ctx,
XRPAmount  baseFee 
)
staticinherited

Definition at line 258 of file Transactor.cpp.

◆ checkSign()

NotTEC ripple::Transactor::checkSign ( PreclaimContext const &  ctx)
staticinherited

Definition at line 578 of file Transactor.cpp.

◆ checkBatchSign()

NotTEC ripple::Transactor::checkBatchSign ( PreclaimContext const &  ctx)
staticinherited

Definition at line 635 of file Transactor.cpp.

◆ calculateBaseFee()

XRPAmount ripple::Transactor::calculateBaseFee ( ReadView const &  view,
STTx const &  tx 
)
staticinherited

Definition at line 230 of file Transactor.cpp.

◆ checkPermission()

TER ripple::Transactor::checkPermission ( ReadView const &  view,
STTx const &  tx 
)
staticinherited

Definition at line 214 of file Transactor.cpp.

◆ ticketDelete()

TER ripple::Transactor::ticketDelete ( ApplyView view,
AccountID const &  account,
uint256 const &  ticketIndex,
beast::Journal  j 
)
staticinherited

Definition at line 479 of file Transactor.cpp.

◆ apply()

TER ripple::Transactor::apply ( )
protectedinherited

Definition at line 541 of file Transactor.cpp.

◆ minimumFee()

XRPAmount ripple::Transactor::minimumFee ( Application app,
XRPAmount  baseFee,
Fees const &  fees,
ApplyFlags  flags 
)
staticprotectedinherited

Compute the minimum fee required to process a transaction with a given baseFee based on the current server load.

Parameters
appThe application hosting the server
baseFeeThe base fee of a candidate transaction
See also
ripple::calculateBaseFee
Parameters
feesFee settings from the current ledger
flagsTransaction processing fees

Definition at line 248 of file Transactor.cpp.

◆ reset()

std::pair< TER, XRPAmount > ripple::Transactor::reset ( XRPAmount  fee)
privateinherited

Reset the context, discarding any changes made and adjust the fee.

Parameters
feeThe transaction fee to be charged.
Returns
A pair containing the transaction result and the actual fee charged.

Definition at line 999 of file Transactor.cpp.

◆ consumeSeqProxy()

TER ripple::Transactor::consumeSeqProxy ( SLE::pointer const &  sleAccount)
privateinherited

Definition at line 460 of file Transactor.cpp.

◆ payFee()

TER ripple::Transactor::payFee ( )
privateinherited

Definition at line 323 of file Transactor.cpp.

◆ checkSingleSign()

NotTEC ripple::Transactor::checkSingleSign ( AccountID const &  idSigner,
AccountID const &  idAccount,
std::shared_ptr< SLE const >  sleAccount,
Rules const &  rules,
beast::Journal  j 
)
staticprivateinherited

Definition at line 682 of file Transactor.cpp.

◆ checkMultiSign()

NotTEC ripple::Transactor::checkMultiSign ( ReadView const &  view,
AccountID const &  idAccount,
STArray const &  txSigners,
ApplyFlags const &  flags,
beast::Journal  j 
)
staticprivateinherited

Definition at line 743 of file Transactor.cpp.

◆ trapTransaction()

void ripple::Transactor::trapTransaction ( uint256  txHash) const
privateinherited

Definition at line 1054 of file Transactor.cpp.

Member Data Documentation

◆ ConsequencesFactory

constexpr ConsequencesFactoryType ripple::CreateOffer::ConsequencesFactory {Custom}
staticconstexpr

Definition at line 36 of file CreateOffer.h.

◆ cross_type_

CrossType ripple::CreateOffer::cross_type_
private

Definition at line 152 of file CreateOffer.h.

◆ stepCounter_

OfferStream::StepCounter ripple::CreateOffer::stepCounter_
private

Definition at line 155 of file CreateOffer.h.

◆ ctx_

ApplyContext& ripple::Transactor::ctx_
protectedinherited

Definition at line 140 of file Transactor.h.

◆ j_

beast::Journal const ripple::Transactor::j_
protectedinherited

Definition at line 141 of file Transactor.h.

◆ account_

AccountID const ripple::Transactor::account_
protectedinherited

Definition at line 143 of file Transactor.h.

◆ mPriorBalance

XRPAmount ripple::Transactor::mPriorBalance
protectedinherited

Definition at line 144 of file Transactor.h.

◆ mSourceBalance

XRPAmount ripple::Transactor::mSourceBalance
protectedinherited

Definition at line 145 of file Transactor.h.