Line data Source code
1 : // Copyright (c) 2021 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 <interfaces/chain.h> 6 : #include <interfaces/coinjoin.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 : #include <util/system.h> 14 : 15 : #include <memory> 16 : 17 : using node::NodeContext; 18 : 19 : namespace init { 20 : namespace { 21 : class BitcoindInit : public interfaces::Init 22 : { 23 : public: 24 0 : BitcoindInit(NodeContext& node) : m_node(node) 25 0 : { 26 0 : m_node.args = &gArgs; 27 0 : m_node.init = this; 28 0 : } 29 0 : std::unique_ptr<interfaces::Node> makeNode() override { return interfaces::MakeNode(m_node); } 30 0 : std::unique_ptr<interfaces::Chain> makeChain() override { return interfaces::MakeChain(m_node); } 31 0 : std::unique_ptr<interfaces::CoinJoin::Loader> makeCoinJoinLoader() override 32 : { 33 0 : return interfaces::MakeCoinJoinLoader(m_node); 34 : } 35 0 : std::unique_ptr<interfaces::WalletLoader> makeWalletLoader(interfaces::Chain& chain, interfaces::CoinJoin::Loader& coinjoin_loader) override 36 : { 37 0 : return MakeWalletLoader(chain, *Assert(m_node.args), m_node, coinjoin_loader); 38 : } 39 0 : std::unique_ptr<interfaces::Echo> makeEcho() override { return interfaces::MakeEcho(); } 40 : NodeContext& m_node; 41 : }; 42 : } // namespace 43 : } // namespace init 44 : 45 : namespace interfaces { 46 0 : std::unique_ptr<Init> MakeNodeInit(NodeContext& node, int argc, char* argv[], int& exit_status) 47 : { 48 0 : return std::make_unique<init::BitcoindInit>(node); 49 : } 50 : } // namespace interfaces