mirror of
https://github.com/XRPLF/rippled.git
synced 2025-12-06 17:27:55 +00:00
Add support for AccountSet to TransactionEngine.
This commit is contained in:
@@ -297,12 +297,13 @@ TransactionEngineResult TransactionEngine::applyTransaction(const SerializedTran
|
||||
}
|
||||
break;
|
||||
|
||||
case ttACCOUNT_SET:
|
||||
case ttCREDIT_SET:
|
||||
case ttINVOICE:
|
||||
case ttOFFER:
|
||||
case ttCREDIT_SET:
|
||||
case ttTRANSIT_SET:
|
||||
case ttWALLET_ADD:
|
||||
result = terSUCCESS;
|
||||
nothing();
|
||||
break;
|
||||
|
||||
case ttINVALID:
|
||||
@@ -455,6 +456,10 @@ TransactionEngineResult TransactionEngine::applyTransaction(const SerializedTran
|
||||
|
||||
switch(txn.getTxnType())
|
||||
{
|
||||
case ttACCOUNT_SET:
|
||||
result = doAccountSet(txn, accounts);
|
||||
break;
|
||||
|
||||
case ttCLAIM:
|
||||
result = doClaim(txn, accounts);
|
||||
break;
|
||||
@@ -527,6 +532,74 @@ TransactionEngineResult TransactionEngine::applyTransaction(const SerializedTran
|
||||
return result;
|
||||
}
|
||||
|
||||
TransactionEngineResult TransactionEngine::doAccountSet(const SerializedTransaction& txn, std::vector<AffectedAccount>& accounts)
|
||||
{
|
||||
std::cerr << "doAccountSet>" << std::endl;
|
||||
|
||||
SLE::pointer sleSrc = accounts[0].second;
|
||||
uint32 txFlags = txn.getFlags();
|
||||
|
||||
//
|
||||
// EmailHash
|
||||
//
|
||||
|
||||
if (txFlags & tfUnsetEmailHash)
|
||||
{
|
||||
std::cerr << "doClaim: unset email hash" << std::endl;
|
||||
|
||||
sleSrc->makeIFieldAbsent(sfEmailHash);
|
||||
}
|
||||
else if (txn.getITFieldPresent(sfEmailHash))
|
||||
{
|
||||
std::cerr << "doClaim: set email hash" << std::endl;
|
||||
|
||||
sleSrc->setIFieldH128(sfEmailHash, txn.getITFieldH128(sfEmailHash));
|
||||
}
|
||||
|
||||
//
|
||||
// WalletLocator
|
||||
//
|
||||
|
||||
if (txFlags & tfUnsetWalletLocator)
|
||||
{
|
||||
std::cerr << "doClaim: unset wallet locator" << std::endl;
|
||||
|
||||
sleSrc->makeIFieldAbsent(sfWalletLocator);
|
||||
}
|
||||
else if (txn.getITFieldPresent(sfWalletLocator))
|
||||
{
|
||||
std::cerr << "doClaim: set wallet locator" << std::endl;
|
||||
|
||||
sleSrc->setIFieldH256(sfWalletLocator, txn.getITFieldH256(sfWalletLocator));
|
||||
}
|
||||
|
||||
//
|
||||
// MessageKey
|
||||
//
|
||||
|
||||
if (!txn.getITFieldPresent(sfMessageKey))
|
||||
{
|
||||
nothing();
|
||||
|
||||
}
|
||||
else if (sleSrc->getIFieldPresent(sfMessageKey))
|
||||
{
|
||||
std::cerr << "doClaim: can not change message key" << std::endl;
|
||||
|
||||
return tenMSG_SET;
|
||||
}
|
||||
else
|
||||
{
|
||||
std::cerr << "doClaim: set message key" << std::endl;
|
||||
|
||||
sleSrc->setIFieldVL(sfMessageKey, txn.getITFieldVL(sfMessageKey));
|
||||
}
|
||||
|
||||
std::cerr << "doAccountSet<" << std::endl;
|
||||
|
||||
return terSUCCESS;
|
||||
}
|
||||
|
||||
TransactionEngineResult TransactionEngine::doClaim(const SerializedTransaction& txn,
|
||||
std::vector<AffectedAccount>& accounts)
|
||||
{
|
||||
|
||||
@@ -25,6 +25,7 @@ enum TransactionEngineResult
|
||||
tenUNCLAIMED = -200, // Can not use an unclaimed account.
|
||||
tenBAD_AUTH, // Transaction's public key is not authorized.
|
||||
tenCREATED, // Can't add an already created account.
|
||||
tenMSG_SET, // Can't change a message key.
|
||||
|
||||
// Other
|
||||
tenFAILED = -100, // Something broke horribly
|
||||
@@ -93,18 +94,19 @@ private:
|
||||
protected:
|
||||
Ledger::pointer mLedger;
|
||||
|
||||
TransactionEngineResult doClaim(const SerializedTransaction&, std::vector<AffectedAccount>&);
|
||||
TransactionEngineResult doCreditSet(const SerializedTransaction&, std::vector<AffectedAccount>&,
|
||||
TransactionEngineResult doAccountSet(const SerializedTransaction& txn, std::vector<AffectedAccount>& accounts);
|
||||
TransactionEngineResult doClaim(const SerializedTransaction& txn, std::vector<AffectedAccount>& accounts);
|
||||
TransactionEngineResult doCreditSet(const SerializedTransaction& txn, std::vector<AffectedAccount>& accounts,
|
||||
const uint160& srcAccountID);
|
||||
TransactionEngineResult doDelete(const SerializedTransaction&, std::vector<AffectedAccount>&);
|
||||
TransactionEngineResult doInvoice(const SerializedTransaction&, std::vector<AffectedAccount>&);
|
||||
TransactionEngineResult doOffer(const SerializedTransaction&, std::vector<AffectedAccount>&);
|
||||
TransactionEngineResult doPayment(const SerializedTransaction&, std::vector<AffectedAccount>&,
|
||||
TransactionEngineResult doDelete(const SerializedTransaction& txn, std::vector<AffectedAccount>& accounts);
|
||||
TransactionEngineResult doInvoice(const SerializedTransaction& txn, std::vector<AffectedAccount>& accounts);
|
||||
TransactionEngineResult doOffer(const SerializedTransaction& txn, std::vector<AffectedAccount>& accounts);
|
||||
TransactionEngineResult doPayment(const SerializedTransaction& txn, std::vector<AffectedAccount>& accounts,
|
||||
const uint160& srcAccountID);
|
||||
TransactionEngineResult doStore(const SerializedTransaction&, std::vector<AffectedAccount>&);
|
||||
TransactionEngineResult doTake(const SerializedTransaction&, std::vector<AffectedAccount>&);
|
||||
TransactionEngineResult doTransitSet(const SerializedTransaction&, std::vector<AffectedAccount>&);
|
||||
TransactionEngineResult doWalletAdd(const SerializedTransaction&, std::vector<AffectedAccount>&);
|
||||
TransactionEngineResult doStore(const SerializedTransaction& txn, std::vector<AffectedAccount>& accounts);
|
||||
TransactionEngineResult doTake(const SerializedTransaction& txn, std::vector<AffectedAccount>& accounts);
|
||||
TransactionEngineResult doTransitSet(const SerializedTransaction& txn, std::vector<AffectedAccount>& accounts);
|
||||
TransactionEngineResult doWalletAdd(const SerializedTransaction& txn, std::vector<AffectedAccount>& accounts);
|
||||
|
||||
public:
|
||||
TransactionEngine() { ; }
|
||||
|
||||
Reference in New Issue
Block a user