Bitcoin Core
32.1.0
P2P Digital Currency
Toggle main menu visibility
Loading...
Searching...
No Matches
src
init
bitcoin-node.cpp
Go to the documentation of this file.
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/ipc.h
>
11
#include <
interfaces/mining.h
>
12
#include <
interfaces/node.h
>
13
#include <
interfaces/rpc.h
>
14
#include <
interfaces/wallet.h
>
15
#include <
node/context.h
>
16
#include <
util/check.h
>
17
18
#include <memory>
19
20
namespace
init
{
21
namespace
{
22
const
char
* EXE_NAME =
"bitcoin-node"
;
23
24
class
BitcoinNodeInit :
public
interfaces::Init
25
{
26
public
:
27
BitcoinNodeInit(node::NodeContext& node,
const
char
* arg0)
28
: m_node(node),
29
m_ipc(interfaces::
MakeIpc
(EXE_NAME, arg0, *this))
30
{
31
InitContext
(m_node);
32
m_node.init =
this
;
33
}
34
std::unique_ptr<interfaces::Node> makeNode()
override
{
return
interfaces::MakeNode
(m_node); }
35
std::unique_ptr<interfaces::Chain> makeChain()
override
{
return
interfaces::MakeChain
(m_node); }
36
std::unique_ptr<interfaces::Mining> makeMining()
override
{
return
interfaces::MakeMining
(m_node); }
37
std::unique_ptr<interfaces::WalletLoader> makeWalletLoader(interfaces::Chain& chain)
override
38
{
39
return
MakeWalletLoader
(chain, *
Assert
(m_node.args));
40
}
41
std::unique_ptr<interfaces::Echo> makeEcho()
override
{
return
interfaces::MakeEcho
(); }
42
std::unique_ptr<interfaces::Rpc> makeRpc()
override
{
return
interfaces::MakeRpc
(m_node); }
43
interfaces::Ipc* ipc()
override
{
return
m_ipc.get(); }
44
bool
canListenIpc()
override
{
return
true
; }
45
const
char
* exeName()
override
{
return
EXE_NAME; }
46
node::NodeContext& m_node;
47
std::unique_ptr<interfaces::Ipc> m_ipc;
48
};
49
}
// namespace
50
}
// namespace init
51
52
namespace
interfaces
{
53
std::unique_ptr<Init>
MakeNodeInit
(
node::NodeContext
&
node
,
int
argc,
char
* argv[],
int
&
exit_status
)
54
{
55
auto
init
= std::make_unique<init::BitcoinNodeInit>(
node
, argc > 0 ? argv[0] :
""
);
56
// Check if bitcoin-node is being invoked as an IPC server. If so, then
57
// bypass normal execution and just respond to requests over the IPC
58
// channel and return null.
59
if
(
init
->m_ipc->startSpawnedProcess(argc, argv,
exit_status
)) {
60
return
nullptr
;
61
}
62
return
init
;
63
}
64
}
// namespace interfaces
exit_status
int exit_status
Definition
bitcoin-wallet.cpp:100
check.h
Assert
#define Assert(val)
Identity function.
Definition
check.h:116
echo.h
InitContext
void InitContext(NodeContext &node)
Initialize node context shutdown and args variables.
Definition
init.cpp:232
chain.h
init.h
mining.h
wallet.h
init.h
ipc.h
init
Definition
basic.cpp:11
interfaces
Definition
interfaces.cpp:42
interfaces::MakeNode
std::unique_ptr< Node > MakeNode(node::NodeContext &context)
Return implementation of Node interface.
Definition
interfaces.cpp:1087
interfaces::MakeEcho
std::unique_ptr< Echo > MakeEcho()
Return implementation of Echo interface.
Definition
interfaces.cpp:53
interfaces::MakeRpc
std::unique_ptr< Rpc > MakeRpc(node::NodeContext &node)
Return implementation of Rpc interface.
Definition
interfaces.cpp:1102
interfaces::MakeWalletLoader
std::unique_ptr< WalletLoader > MakeWalletLoader(Chain &chain, ArgsManager &args)
Definition
dummywallet.cpp:59
interfaces::MakeIpc
std::unique_ptr< Ipc > MakeIpc(const char *exe_name, const char *process_argv0, Init &init)
Return implementation of Ipc interface.
Definition
interfaces.cpp:137
interfaces::MakeMining
std::unique_ptr< Mining > MakeMining(const node::NodeContext &node, bool wait_loaded=true)
Definition
interfaces.cpp:1089
interfaces::MakeNodeInit
std::unique_ptr< Init > MakeNodeInit(node::NodeContext &node, int argc, char *argv[], int &exit_status)
Definition
bitcoin-node.cpp:53
interfaces::MakeChain
std::unique_ptr< Chain > MakeChain(node::NodeContext &node)
Return implementation of Chain interface.
Definition
interfaces.cpp:1088
node
Definition
messages.h:21
context.h
node.h
rpc.h
node::NodeContext
Definition
context.h:59
Generated on
for Bitcoin Core by
1.18.0