Coverage Report

Created: 2026-09-14 20:36

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/tmp/bitcoin/src/init/bitcoind.cpp
Line
Count
Source
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 <interfaces/init.h> // IWYU pragma: associated
6
7
#include <init.h>
8
#include <interfaces/chain.h>
9
#include <interfaces/echo.h>
10
#include <interfaces/mining.h>
11
#include <interfaces/node.h>
12
#include <interfaces/wallet.h>
13
#include <node/context.h>
14
#include <util/check.h>
15
16
#include <memory>
17
18
using node::NodeContext;
19
20
namespace init {
21
namespace {
22
const char* EXE_NAME = "bitcoind";
23
24
class BitcoindInit : public interfaces::Init
25
{
26
public:
27
1.23k
    BitcoindInit(NodeContext& node) : m_node(node)
28
1.23k
    {
29
1.23k
        InitContext(m_node);
30
1.23k
        m_node.init = this;
31
1.23k
    }
32
0
    std::unique_ptr<interfaces::Node> makeNode() override { return interfaces::MakeNode(m_node); }
33
0
    std::unique_ptr<interfaces::Chain> makeChain() override { return interfaces::MakeChain(m_node); }
34
0
    std::unique_ptr<interfaces::Mining> makeMining() override { return interfaces::MakeMining(m_node); }
35
    std::unique_ptr<interfaces::WalletLoader> makeWalletLoader(interfaces::Chain& chain) override
36
413
    {
37
413
        return MakeWalletLoader(chain, *Assert(m_node.args));
38
413
    }
39
1
    std::unique_ptr<interfaces::Echo> makeEcho() override { return interfaces::MakeEcho(); }
40
4
    const char* exeName() override { return EXE_NAME; }
41
    NodeContext& m_node;
42
};
43
} // namespace
44
} // namespace init
45
46
namespace interfaces {
47
std::unique_ptr<Init> MakeNodeInit(NodeContext& node, int argc, char* argv[], int& exit_status)
48
1.23k
{
49
1.23k
    return std::make_unique<init::BitcoindInit>(node);
50
1.23k
}
51
} // namespace interfaces