Coverage Report

Created: 2026-04-29 19:21

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