aboutsummaryrefslogtreecommitdiff
path: root/src/init
diff options
context:
space:
mode:
authorRussell Yanofsky <russ@yanofsky.org>2017-12-05 15:57:12 -0500
committerRussell Yanofsky <russ@yanofsky.org>2021-08-17 03:05:15 -0500
commite4709c7b56612553fb7cbf16ef2d5099c5b732d0 (patch)
tree3184f2fcce535f256d986e94b8d5b359223db150 /src/init
parentfdd80b0a53b4af0b29cb6e03118e2456d053a757 (diff)
downloadbitcoin-e4709c7b56612553fb7cbf16ef2d5099c5b732d0.tar.xz
Start using init makeNode, makeChain, etc methods
Use interfaces::Init::make* methods instead of interfaces::Make* functions, so interfaces can be constructed differently in different executables without having to change any code. (So for example bitcoin-gui can make an interfaces::Node pointer that communicates with a bitcoin-node subprocess, while bitcoin-qt can make an interfaces::Node pointer that starts node code in the same process.)
Diffstat (limited to 'src/init')
-rw-r--r--src/init/bitcoin-node.cpp9
-rw-r--r--src/init/bitcoind.cpp11
2 files changed, 20 insertions, 0 deletions
diff --git a/src/init/bitcoin-node.cpp b/src/init/bitcoin-node.cpp
index 6b6157c139..fa56153745 100644
--- a/src/init/bitcoin-node.cpp
+++ b/src/init/bitcoin-node.cpp
@@ -2,9 +2,12 @@
// Distributed under the MIT software license, see the accompanying
// file COPYING or http://www.opensource.org/licenses/mit-license.php.
+#include <interfaces/chain.h>
#include <interfaces/echo.h>
#include <interfaces/init.h>
#include <interfaces/ipc.h>
+#include <interfaces/node.h>
+#include <interfaces/wallet.h>
#include <node/context.h>
#include <util/system.h>
@@ -24,6 +27,12 @@ public:
m_node.args = &gArgs;
m_node.init = this;
}
+ std::unique_ptr<interfaces::Node> makeNode() override { return interfaces::MakeNode(m_node); }
+ std::unique_ptr<interfaces::Chain> makeChain() override { return interfaces::MakeChain(m_node); }
+ std::unique_ptr<interfaces::WalletClient> makeWalletClient(interfaces::Chain& chain) override
+ {
+ return MakeWalletClient(chain, *Assert(m_node.args));
+ }
std::unique_ptr<interfaces::Echo> makeEcho() override { return interfaces::MakeEcho(); }
interfaces::Ipc* ipc() override { return m_ipc.get(); }
NodeContext& m_node;
diff --git a/src/init/bitcoind.cpp b/src/init/bitcoind.cpp
index 1d4504c24f..9c8d5bd9bb 100644
--- a/src/init/bitcoind.cpp
+++ b/src/init/bitcoind.cpp
@@ -2,7 +2,11 @@
// Distributed under the MIT software license, see the accompanying
// file COPYING or http://www.opensource.org/licenses/mit-license.php.
+#include <interfaces/chain.h>
+#include <interfaces/echo.h>
#include <interfaces/init.h>
+#include <interfaces/node.h>
+#include <interfaces/wallet.h>
#include <node/context.h>
#include <util/system.h>
@@ -18,6 +22,13 @@ public:
m_node.args = &gArgs;
m_node.init = this;
}
+ std::unique_ptr<interfaces::Node> makeNode() override { return interfaces::MakeNode(m_node); }
+ std::unique_ptr<interfaces::Chain> makeChain() override { return interfaces::MakeChain(m_node); }
+ std::unique_ptr<interfaces::WalletClient> makeWalletClient(interfaces::Chain& chain) override
+ {
+ return MakeWalletClient(chain, *Assert(m_node.args));
+ }
+ std::unique_ptr<interfaces::Echo> makeEcho() override { return interfaces::MakeEcho(); }
NodeContext& m_node;
};
} // namespace