From 3956ad1e6bd2060bc769de59f4a5d9e859b5d4f7 Mon Sep 17 00:00:00 2001 From: woodser Date: Mon, 29 Jul 2019 22:10:13 -0400 Subject: [PATCH] implement tx wallet deep copy; ready to implement tx request deep copy --- src/daemon/MoneroDaemonModel.cpp | 4 ++-- src/wallet/MoneroWalletModel.cpp | 17 ++++++++++++++--- 2 files changed, 16 insertions(+), 5 deletions(-) diff --git a/src/daemon/MoneroDaemonModel.cpp b/src/daemon/MoneroDaemonModel.cpp index 31e8daf..071fb6f 100644 --- a/src/daemon/MoneroDaemonModel.cpp +++ b/src/daemon/MoneroDaemonModel.cpp @@ -202,7 +202,7 @@ namespace monero { if (!src->vins.empty()) { tgt->vins = vector>(); for (const shared_ptr& vin : src->vins) { - shared_ptr vinCopy = vin->copy(vin, shared_ptr()); + shared_ptr vinCopy = vin->copy(vin, make_shared()); vinCopy->tx = tgt; tgt->vins.push_back(vinCopy); } @@ -210,7 +210,7 @@ namespace monero { if (!src->vouts.empty()) { tgt->vouts = vector>(); for (const shared_ptr& vout : src->vouts) { - shared_ptr voutCopy = vout->copy(vout, shared_ptr()); + shared_ptr voutCopy = vout->copy(vout, make_shared()); voutCopy->tx = tgt; tgt->vouts.push_back(voutCopy); } diff --git a/src/wallet/MoneroWalletModel.cpp b/src/wallet/MoneroWalletModel.cpp index fa421a2..9b2d31b 100644 --- a/src/wallet/MoneroWalletModel.cpp +++ b/src/wallet/MoneroWalletModel.cpp @@ -107,8 +107,6 @@ namespace monero { shared_ptr MoneroTxWallet::copy(const shared_ptr& src, const shared_ptr& tgt) const { MTRACE("MoneroTxWallet::copy(const shared_ptr& src, const shared_ptr& tgt)"); - MTRACE("src: " << src); - MTRACE("tgt: " << tgt); return MoneroTxWallet::copy(static_pointer_cast(src), static_pointer_cast(tgt)); }; @@ -120,7 +118,20 @@ namespace monero { MoneroTx::copy(static_pointer_cast(src), static_pointer_cast(tgt)); // copy wallet extensions - throw runtime_error("MoneroTxWallet::copy(txWallet) not implemented"); + if (!src->incomingTransfers.empty()) { + tgt->incomingTransfers = vector>(); + for (const shared_ptr& transfer : src->incomingTransfers) { + shared_ptr transferCopy = transfer->copy(transfer, shared_ptr()); + transferCopy->tx = tgt; + tgt->incomingTransfers.push_back(transferCopy); + } + } + if (src->outgoingTransfer != boost::none) { + shared_ptr transferCopy = src->outgoingTransfer.get()->copy(src->outgoingTransfer.get(), make_shared()); + transferCopy->tx = tgt; + tgt->outgoingTransfer = transferCopy; + } + tgt->note = src->note; return tgt; };