mirror of
https://github.com/XRPLF/rippled.git
synced 2026-08-23 15:20:54 +00:00
Revert "WIP trying to fix MSVC compilation error"
This reverts commit 06a8a61b23.
This commit is contained in:
@@ -71,53 +71,46 @@ Expected<MPTID, TER>
|
||||
MPTokenIssuanceCreate::create(
|
||||
ApplyView& view,
|
||||
beast::Journal journal,
|
||||
AccountID const& account,
|
||||
std::uint32_t sequence,
|
||||
std::uint32_t flags,
|
||||
std::optional<std::uint64_t> maxAmount,
|
||||
std::optional<std::uint8_t> assetScale,
|
||||
std::optional<std::uint16_t> transferFee,
|
||||
std::optional<Slice> const& metadata,
|
||||
std::optional<uint256> domainId)
|
||||
MPTCreateArgs const& args)
|
||||
{
|
||||
auto const acct = view.peek(keylet::account(account));
|
||||
auto const acct = view.peek(keylet::account(args.account));
|
||||
if (!acct)
|
||||
return Unexpected(tecINTERNAL);
|
||||
|
||||
auto mptId = makeMptID(sequence, account);
|
||||
auto mptId = makeMptID(args.sequence, args.account);
|
||||
auto const mptIssuanceKeylet = keylet::mptIssuance(mptId);
|
||||
|
||||
// create the MPTokenIssuance
|
||||
{
|
||||
auto const ownerNode = view.dirInsert(
|
||||
keylet::ownerDir(account),
|
||||
keylet::ownerDir(args.account),
|
||||
mptIssuanceKeylet,
|
||||
describeOwnerDir(account));
|
||||
describeOwnerDir(args.account));
|
||||
|
||||
if (!ownerNode)
|
||||
return Unexpected(tecDIR_FULL);
|
||||
|
||||
auto mptIssuance = std::make_shared<SLE>(mptIssuanceKeylet);
|
||||
(*mptIssuance)[sfFlags] = flags & ~tfUniversal;
|
||||
(*mptIssuance)[sfIssuer] = account;
|
||||
(*mptIssuance)[sfFlags] = args.flags & ~tfUniversal;
|
||||
(*mptIssuance)[sfIssuer] = args.account;
|
||||
(*mptIssuance)[sfOutstandingAmount] = 0;
|
||||
(*mptIssuance)[sfOwnerNode] = *ownerNode;
|
||||
(*mptIssuance)[sfSequence] = sequence;
|
||||
(*mptIssuance)[sfSequence] = args.sequence;
|
||||
|
||||
if (maxAmount)
|
||||
(*mptIssuance)[sfMaximumAmount] = *maxAmount;
|
||||
if (args.maxAmount)
|
||||
(*mptIssuance)[sfMaximumAmount] = *args.maxAmount;
|
||||
|
||||
if (assetScale)
|
||||
(*mptIssuance)[sfAssetScale] = *assetScale;
|
||||
if (args.assetScale)
|
||||
(*mptIssuance)[sfAssetScale] = *args.assetScale;
|
||||
|
||||
if (transferFee)
|
||||
(*mptIssuance)[sfTransferFee] = *transferFee;
|
||||
if (args.transferFee)
|
||||
(*mptIssuance)[sfTransferFee] = *args.transferFee;
|
||||
|
||||
if (metadata)
|
||||
(*mptIssuance)[sfMPTokenMetadata] = *metadata;
|
||||
if (args.metadata)
|
||||
(*mptIssuance)[sfMPTokenMetadata] = *args.metadata;
|
||||
|
||||
if (domainId)
|
||||
(*mptIssuance)[sfDomainID] = *domainId;
|
||||
if (args.domainId)
|
||||
(*mptIssuance)[sfDomainID] = *args.domainId;
|
||||
|
||||
view.insert(mptIssuance);
|
||||
}
|
||||
@@ -140,13 +133,13 @@ MPTokenIssuanceCreate::doApply()
|
||||
auto result = create(
|
||||
view(),
|
||||
j_,
|
||||
account_,
|
||||
tx.getSeqProxy().value(),
|
||||
tx.getFlags(),
|
||||
tx[~sfMaximumAmount],
|
||||
tx[~sfAssetScale],
|
||||
tx[~sfTransferFee],
|
||||
tx[~sfMPTokenMetadata]);
|
||||
{.account = account_,
|
||||
.sequence = tx.getSeqProxy().value(),
|
||||
.flags = tx.getFlags(),
|
||||
.maxAmount = tx[~sfMaximumAmount],
|
||||
.assetScale = tx[~sfAssetScale],
|
||||
.transferFee = tx[~sfTransferFee],
|
||||
.metadata = tx[~sfMPTokenMetadata]});
|
||||
return result ? tesSUCCESS : result.error();
|
||||
}
|
||||
|
||||
|
||||
@@ -26,6 +26,18 @@
|
||||
|
||||
namespace ripple {
|
||||
|
||||
struct MPTCreateArgs
|
||||
{
|
||||
AccountID const& account;
|
||||
std::uint32_t sequence;
|
||||
std::uint32_t flags = 0;
|
||||
std::optional<std::uint64_t> maxAmount{};
|
||||
std::optional<std::uint8_t> assetScale{};
|
||||
std::optional<std::uint16_t> transferFee{};
|
||||
std::optional<Slice> const& metadata{};
|
||||
std::optional<uint256> domainId{};
|
||||
};
|
||||
|
||||
class MPTokenIssuanceCreate : public Transactor
|
||||
{
|
||||
public:
|
||||
@@ -42,17 +54,7 @@ public:
|
||||
doApply() override;
|
||||
|
||||
static Expected<MPTID, TER>
|
||||
create(
|
||||
ApplyView& view,
|
||||
beast::Journal journal,
|
||||
AccountID const& account,
|
||||
std::uint32_t sequence,
|
||||
std::uint32_t flags = 0,
|
||||
std::optional<std::uint64_t> maxAmount = {},
|
||||
std::optional<std::uint8_t> assetScale = {},
|
||||
std::optional<std::uint16_t> transferFee = {},
|
||||
std::optional<Slice> const& metadata = {},
|
||||
std::optional<uint256> domainId = {});
|
||||
create(ApplyView& view, beast::Journal journal, MPTCreateArgs const& args);
|
||||
};
|
||||
|
||||
} // namespace ripple
|
||||
|
||||
@@ -66,16 +66,15 @@ TER
|
||||
MPTokenIssuanceDestroy::destroy(
|
||||
ApplyView& view,
|
||||
beast::Journal journal,
|
||||
AccountID const account,
|
||||
MPTID issuanceID)
|
||||
MPTDestroyArgs const& args)
|
||||
{
|
||||
auto const mpt = view.peek(keylet::mptIssuance(issuanceID));
|
||||
auto const mpt = view.peek(keylet::mptIssuance(args.issuanceID));
|
||||
if (!mpt)
|
||||
return tecOBJECT_NOT_FOUND;
|
||||
|
||||
if ((*mpt)[sfIssuer] != account)
|
||||
if ((*mpt)[sfIssuer] != args.account)
|
||||
return tecNO_PERMISSION;
|
||||
auto const& issuer = account;
|
||||
auto const& issuer = args.account;
|
||||
|
||||
if ((*mpt)[~sfOutstandingAmount] != 0)
|
||||
return tecHAS_OBLIGATIONS;
|
||||
@@ -93,7 +92,10 @@ TER
|
||||
MPTokenIssuanceDestroy::doApply()
|
||||
{
|
||||
return destroy(
|
||||
view(), j_, ctx_.tx[sfAccount], ctx_.tx[sfMPTokenIssuanceID]);
|
||||
view(),
|
||||
j_,
|
||||
{.account = ctx_.tx[sfAccount],
|
||||
.issuanceID = ctx_.tx[sfMPTokenIssuanceID]});
|
||||
}
|
||||
|
||||
} // namespace ripple
|
||||
|
||||
@@ -24,6 +24,12 @@
|
||||
|
||||
namespace ripple {
|
||||
|
||||
struct MPTDestroyArgs
|
||||
{
|
||||
AccountID const& account;
|
||||
MPTID issuanceID;
|
||||
};
|
||||
|
||||
class MPTokenIssuanceDestroy : public Transactor
|
||||
{
|
||||
public:
|
||||
@@ -43,8 +49,7 @@ public:
|
||||
destroy(
|
||||
ApplyView& view,
|
||||
beast::Journal journal,
|
||||
AccountID const account,
|
||||
MPTID issuanceID);
|
||||
MPTDestroyArgs const& args);
|
||||
|
||||
TER
|
||||
doApply() override;
|
||||
|
||||
@@ -141,14 +141,13 @@ VaultCreate::doApply()
|
||||
auto maybeShare = MPTokenIssuanceCreate::create(
|
||||
view(),
|
||||
j_,
|
||||
pseudoId,
|
||||
1,
|
||||
mptFlags,
|
||||
{},
|
||||
{},
|
||||
{},
|
||||
tx[~sfMPTokenMetadata],
|
||||
tx[~sfDomainID]);
|
||||
{
|
||||
.account = pseudoId,
|
||||
.sequence = 1,
|
||||
.flags = mptFlags,
|
||||
.metadata = tx[~sfMPTokenMetadata],
|
||||
.domainId = tx[~sfDomainID],
|
||||
});
|
||||
if (!maybeShare)
|
||||
return maybeShare.error();
|
||||
auto& share = *maybeShare;
|
||||
|
||||
@@ -69,7 +69,10 @@ VaultDelete::doApply()
|
||||
|
||||
// Destroy the share issuance.
|
||||
if (auto ter = MPTokenIssuanceDestroy::destroy(
|
||||
view(), j_, vault->at(sfAccount), vault->at(sfMPTokenIssuanceID)))
|
||||
view(),
|
||||
j_,
|
||||
{.account = vault->at(sfAccount),
|
||||
.issuanceID = vault->at(sfMPTokenIssuanceID)}))
|
||||
return ter;
|
||||
|
||||
// The psuedo-account's directory should have been deleted already.
|
||||
|
||||
Reference in New Issue
Block a user