Branch data Line data Source code
1 : : // Copyright (c) 2021-2022 The Bitcoin Core developers 2 : : // Distributed under the MIT software license, see the accompanying 3 : : // file COPYING or http://www.opensource.org/licenses/mit-license.php. 4 : : 5 : : #include <common/args.h> 6 : : #include <interfaces/chain.h> 7 : : #include <interfaces/echo.h> 8 : : #include <interfaces/init.h> 9 : : #include <interfaces/node.h> 10 : : #include <interfaces/wallet.h> 11 : : #include <node/context.h> 12 : : #include <util/check.h> 13 : : 14 : : #include <memory> 15 : : 16 : : using node::NodeContext; 17 : 0 : 18 : 0 : namespace init { 19 : : namespace { 20 : : class BitcoindInit : public interfaces::Init 21 : : { 22 : : public: 23 : 0 : BitcoindInit(NodeContext& node) : m_node(node) 24 : 0 : { 25 : 0 : m_node.args = &gArgs; 26 : 0 : m_node.init = this; 27 : 0 : } 28 : 0 : std::unique_ptr<interfaces::Node> makeNode() override { return interfaces::MakeNode(m_node); } 29 : 0 : std::unique_ptr<interfaces::Chain> makeChain() override { return interfaces::MakeChain(m_node); } 30 : 0 : std::unique_ptr<interfaces::WalletLoader> makeWalletLoader(interfaces::Chain& chain) override 31 : : { 32 : 0 : return MakeWalletLoader(chain, *Assert(m_node.args)); 33 : : } 34 : 0 : std::unique_ptr<interfaces::Echo> makeEcho() override { return interfaces::MakeEcho(); } 35 : : NodeContext& m_node; 36 : : }; 37 : : } // namespace 38 : : } // namespace init 39 : : 40 : : namespace interfaces { 41 : 0 : std::unique_ptr<Init> MakeNodeInit(NodeContext& node, int argc, char* argv[], int& exit_status) 42 : : { 43 : 0 : return std::make_unique<init::BitcoindInit>(node); 44 : : } 45 : : } // namespace interfaces