aboutsummaryrefslogtreecommitdiff
path: root/src/interfaces
diff options
context:
space:
mode:
authorMarcoFalke <falke.marco@gmail.com>2020-04-10 12:57:28 -0400
committerMarcoFalke <falke.marco@gmail.com>2020-04-10 12:57:35 -0400
commit99d6a5be8bf132744917b4b2ece7ec5ac41c94d2 (patch)
treedba236ece56b1cf9d06d6f1ae5cba4a16a127ab2 /src/interfaces
parent1b307613604883daea4913a65da30ae073c9dc4d (diff)
parent3ce16ad2f91d1e2edc7e7bdc5a19f72aa8c3e739 (diff)
downloadbitcoin-99d6a5be8bf132744917b4b2ece7ec5ac41c94d2.tar.xz
Merge #17999: refactor: Add ChainClient setMockTime, getWallets methods
3ce16ad2f91d1e2edc7e7bdc5a19f72aa8c3e739 refactor: Use psbt forward declaration (Russell Yanofsky) 1dde238f2c21a0cc9bada10a2449cf9c6b2178ad Add ChainClient setMockTime, getWallets methods (Russell Yanofsky) Pull request description: This PR is part of the [process separation project](https://github.com/bitcoin/bitcoin/projects/10). These changes are needed to set mock times, and get wallet interface pointers correctly when wallet code is running in a different process from node code in #10102 ACKs for top commit: MarcoFalke: re-ACK 3ce16ad2f91d1e2edc7e7bdc5a19f72aa8c3e739 🔙 promag: Code review ACK 3ce16ad2f91d1e2edc7e7bdc5a19f72aa8c3e739. Tree-SHA512: 6c093bfcd68adf5858a1aade4361cdb7fb015496673504ac7a93d0bd2595215047184551d6fd526baa27782331cd2819ce45c4cf923b205ce93ac29e485b5dd8
Diffstat (limited to 'src/interfaces')
-rw-r--r--src/interfaces/chain.h6
-rw-r--r--src/interfaces/node.cpp5
-rw-r--r--src/interfaces/wallet.cpp9
-rw-r--r--src/interfaces/wallet.h8
4 files changed, 22 insertions, 6 deletions
diff --git a/src/interfaces/chain.h b/src/interfaces/chain.h
index e1bc9bbbf3..ffa9e90c79 100644
--- a/src/interfaces/chain.h
+++ b/src/interfaces/chain.h
@@ -283,6 +283,12 @@ public:
//! Shut down client.
virtual void stop() = 0;
+
+ //! Set mock time.
+ virtual void setMockTime(int64_t time) = 0;
+
+ //! Return interfaces for accessing wallets (if any).
+ virtual std::vector<std::unique_ptr<Wallet>> getWallets() = 0;
};
//! Return implementation of Chain interface.
diff --git a/src/interfaces/node.cpp b/src/interfaces/node.cpp
index 905173d20b..6e5fdc61b5 100644
--- a/src/interfaces/node.cpp
+++ b/src/interfaces/node.cpp
@@ -253,8 +253,9 @@ public:
std::vector<std::unique_ptr<Wallet>> getWallets() override
{
std::vector<std::unique_ptr<Wallet>> wallets;
- for (const std::shared_ptr<CWallet>& wallet : GetWallets()) {
- wallets.emplace_back(MakeWallet(wallet));
+ for (auto& client : m_context.chain_clients) {
+ auto client_wallets = client->getWallets();
+ std::move(client_wallets.begin(), client_wallets.end(), std::back_inserter(wallets));
}
return wallets;
}
diff --git a/src/interfaces/wallet.cpp b/src/interfaces/wallet.cpp
index abce09ca4a..c6e0db34f7 100644
--- a/src/interfaces/wallet.cpp
+++ b/src/interfaces/wallet.cpp
@@ -519,6 +519,15 @@ public:
void start(CScheduler& scheduler) override { return StartWallets(scheduler); }
void flush() override { return FlushWallets(); }
void stop() override { return StopWallets(); }
+ void setMockTime(int64_t time) override { return SetMockTime(time); }
+ std::vector<std::unique_ptr<Wallet>> getWallets() override
+ {
+ std::vector<std::unique_ptr<Wallet>> wallets;
+ for (const auto& wallet : GetWallets()) {
+ wallets.emplace_back(MakeWallet(wallet));
+ }
+ return wallets;
+ }
~WalletClientImpl() override { UnloadWallets(); }
Chain& m_chain;
diff --git a/src/interfaces/wallet.h b/src/interfaces/wallet.h
index dbb0912230..df2ab89d3f 100644
--- a/src/interfaces/wallet.h
+++ b/src/interfaces/wallet.h
@@ -15,7 +15,6 @@
#include <functional>
#include <map>
#include <memory>
-#include <psbt.h>
#include <stdint.h>
#include <string>
#include <tuple>
@@ -26,12 +25,13 @@ class CCoinControl;
class CFeeRate;
class CKey;
class CWallet;
-enum isminetype : unsigned int;
enum class FeeReason;
-typedef uint8_t isminefilter;
-
enum class OutputType;
+enum class TransactionError;
+enum isminetype : unsigned int;
struct CRecipient;
+struct PartiallySignedTransaction;
+typedef uint8_t isminefilter;
namespace interfaces {