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