bitcoin-qt.cpp
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 <init.h> 6 #include <interfaces/chain.h> 7 #include <interfaces/echo.h> 8 #include <interfaces/init.h> 9 #include <interfaces/mining.h> 10 #include <interfaces/node.h> 11 #include <interfaces/wallet.h> 12 #include <node/context.h> 13 #include <util/check.h> 14 15 #include <memory> 16 17 namespace init { 18 namespace { 19 class BitcoinQtInit : public interfaces::Init 20 { 21 public: 22 BitcoinQtInit() 23 { 24 InitContext(m_node); 25 m_node.init = this; 26 } 27 std::unique_ptr<interfaces::Node> makeNode() override { return interfaces::MakeNode(m_node); } 28 std::unique_ptr<interfaces::Chain> makeChain() override { return interfaces::MakeChain(m_node); } 29 std::unique_ptr<interfaces::Mining> makeMining() override { return interfaces::MakeMining(m_node); } 30 std::unique_ptr<interfaces::WalletLoader> makeWalletLoader(interfaces::Chain& chain) override 31 { 32 return MakeWalletLoader(chain, *Assert(m_node.args)); 33 } 34 std::unique_ptr<interfaces::Echo> makeEcho() override { return interfaces::MakeEcho(); } 35 node::NodeContext m_node; 36 }; 37 } // namespace 38 } // namespace init 39 40 namespace interfaces { 41 std::unique_ptr<Init> MakeGuiInit(int argc, char* argv[]) 42 { 43 return std::make_unique<init::BitcoinQtInit>(); 44 } 45 } // namespace interfaces