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