/bitcoin/src/init/bitcoind.cpp
Line | Count | Source |
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 | | using node::NodeContext; |
18 | | |
19 | | namespace init { |
20 | | namespace { |
21 | | class BitcoindInit : public interfaces::Init |
22 | | { |
23 | | public: |
24 | 11.0k | BitcoindInit(NodeContext& node) : m_node(node) |
25 | 11.0k | { |
26 | 11.0k | InitContext(m_node); |
27 | 11.0k | m_node.init = this; |
28 | 11.0k | } |
29 | 0 | std::unique_ptr<interfaces::Node> makeNode() override { return interfaces::MakeNode(m_node); } |
30 | 11.0k | std::unique_ptr<interfaces::Chain> makeChain() override { return interfaces::MakeChain(m_node); } |
31 | 11.0k | std::unique_ptr<interfaces::Mining> makeMining() override { return interfaces::MakeMining(m_node); } |
32 | | std::unique_ptr<interfaces::WalletLoader> makeWalletLoader(interfaces::Chain& chain) override |
33 | 11.0k | { |
34 | 11.0k | return MakeWalletLoader(chain, *Assert(m_node.args)); |
35 | 11.0k | } |
36 | 0 | std::unique_ptr<interfaces::Echo> makeEcho() override { return interfaces::MakeEcho(); } |
37 | | NodeContext& m_node; |
38 | | }; |
39 | | } // namespace |
40 | | } // namespace init |
41 | | |
42 | | namespace interfaces { |
43 | | std::unique_ptr<Init> MakeNodeInit(NodeContext& node, int argc, char* argv[], int& exit_status) |
44 | 11.0k | { |
45 | 11.0k | return std::make_unique<init::BitcoindInit>(node); |
46 | 11.0k | } |
47 | | } // namespace interfaces |