bitcoin-qt.cpp
1 // Copyright (c) 2021-present 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 const char* EXE_NAME = "bitcoin-qt"; 20 21 class BitcoinQtInit : public interfaces::Init 22 { 23 public: 24 BitcoinQtInit() 25 { 26 InitContext(m_node); 27 m_node.init = this; 28 } 29 std::unique_ptr<interfaces::Node> makeNode() override { return interfaces::MakeNode(m_node); } 30 std::unique_ptr<interfaces::Chain> makeChain() override { return interfaces::MakeChain(m_node); } 31 std::unique_ptr<interfaces::Mining> makeMining() override { return interfaces::MakeMining(m_node); } 32 std::unique_ptr<interfaces::WalletLoader> makeWalletLoader(interfaces::Chain& chain) override 33 { 34 return MakeWalletLoader(chain, *Assert(m_node.args)); 35 } 36 std::unique_ptr<interfaces::Echo> makeEcho() override { return interfaces::MakeEcho(); } 37 const char* exeName() override { return EXE_NAME; } 38 node::NodeContext m_node; 39 }; 40 } // namespace 41 } // namespace init 42 43 namespace interfaces { 44 std::unique_ptr<Init> MakeGuiInit(int argc, char* argv[]) 45 { 46 return std::make_unique<init::BitcoinQtInit>(); 47 } 48 } // namespace interfaces