#include <init.h>
#include <kernel/mempool_persist.h>
#include <kernel/validation_cache_sizes.h>
#include <addrman.h>
#include <avalanche/avalanche.h>
#include <avalanche/processor.h>
#include <avalanche/proof.h>
#include <avalanche/validation.h>
#include <avalanche/voterecord.h>
#include <banman.h>
#include <blockfilter.h>
#include <chain.h>
#include <chainparams.h>
#include <common/args.h>
#include <compat/sanity.h>
#include <config.h>
#include <consensus/amount.h>
#include <currencyunit.h>
#include <flatfile.h>
#include <hash.h>
#include <httprpc.h>
#include <httpserver.h>
#include <index/blockfilterindex.h>
#include <index/coinstatsindex.h>
#include <index/txindex.h>
#include <init/common.h>
#include <interfaces/chain.h>
#include <interfaces/node.h>
#include <mapport.h>
#include <mempool_args.h>
#include <net.h>
#include <net_permissions.h>
#include <net_processing.h>
#include <netbase.h>
#include <node/blockmanager_args.h>
#include <node/blockstorage.h>
#include <node/caches.h>
#include <node/chainstate.h>
#include <node/chainstatemanager_args.h>
#include <node/context.h>
#include <node/kernel_notifications.h>
#include <node/mempool_persist_args.h>
#include <node/miner.h>
#include <node/peerman_args.h>
#include <node/ui_interface.h>
#include <node/validation_cache_args.h>
#include <policy/block/rtt.h>
#include <policy/policy.h>
#include <policy/settings.h>
#include <rpc/blockchain.h>
#include <rpc/register.h>
#include <rpc/server.h>
#include <rpc/util.h>
#include <scheduler.h>
#include <script/scriptcache.h>
#include <script/sigcache.h>
#include <script/standard.h>
#include <shutdown.h>
#include <sync.h>
#include <timedata.h>
#include <torcontrol.h>
#include <txdb.h>
#include <txmempool.h>
#include <util/asmap.h>
#include <util/check.h>
#include <util/fs.h>
#include <util/fs_helpers.h>
#include <util/moneystr.h>
#include <util/string.h>
#include <util/syserror.h>
#include <util/thread.h>
#include <util/threadnames.h>
#include <util/translation.h>
#include <validation.h>
#include <validationinterface.h>
#include <walletinitinterface.h>
#include <boost/signals2/signal.hpp>
#include <cerrno>
#include <csignal>
#include <sys/stat.h>
#include <algorithm>
#include <condition_variable>
#include <cstdint>
#include <cstdio>
#include <fstream>
#include <functional>
#include <set>
#include <string>
#include <thread>
#include <vector>
Go to the source code of this file.
|
static fs::path | GetPidFile (const ArgsManager &args) |
|
static bool | CreatePidFile (const ArgsManager &args) |
|
void | Interrupt (NodeContext &node) |
| Interrupt threads.
|
|
void | Shutdown (NodeContext &node) |
|
static void | HandleSIGTERM (int) |
| Signal handlers are very limited in what they are allowed to do.
|
|
static void | HandleSIGHUP (int) |
|
static void | registerSignalHandler (int signal, void(*handler)(int)) |
|
static void | OnRPCStarted () |
|
static void | OnRPCStopped () |
|
void | SetupServerArgs (NodeContext &node) |
| Register all arguments with the ArgsManager.
|
|
static void | BlockNotifyGenesisWait (const CBlockIndex *pBlockIndex) |
|
static bool | AppInitServers (Config &config, HTTPRPCRequestProcessor &httpRPCRequestProcessor, NodeContext &node) |
|
void | InitParameterInteraction (ArgsManager &args) |
| Parameter interaction: change current parameters depending on various rules.
|
|
void | InitLogging (const ArgsManager &args) |
| Initialize global loggers.
|
|
static void | new_handler_terminate () |
|
bool | AppInitBasicSetup (const ArgsManager &args) |
| Initialize bitcoin: Basic context setup.
|
|
bool | AppInitParameterInteraction (Config &config, const ArgsManager &args) |
| Initialization: parameter interaction.
|
|
static bool | LockDataDirectory (bool probeOnly) |
|
bool | AppInitSanityChecks () |
| Initialization sanity checks: ecc init, sanity checks, dir lock.
|
|
bool | AppInitLockDataDirectory () |
| Lock bitcoin data directory.
|
|
bool | AppInitInterfaces (NodeContext &node) |
| Initialize node and wallet interface pointers.
|
|
bool | AppInitMain (Config &config, RPCServer &rpcServer, HTTPRPCRequestProcessor &httpRPCRequestProcessor, NodeContext &node, interfaces::BlockAndHeaderTipInfo *tip_info) |
| Bitcoin main initialization.
|
|
◆ MIN_CORE_FILEDESCRIPTORS
#define MIN_CORE_FILEDESCRIPTORS 150 |
◆ AppInitBasicSetup()
Initialize bitcoin: Basic context setup.
- Note
- This can be done before daemonization. Do not call Shutdown() if this function fails.
- Precondition
- Parameters should be parsed and config file should be read.
Definition at line 1713 of file init.cpp.
◆ AppInitInterfaces()
Initialize node and wallet interface pointers.
Has no prerequisites or side effects besides allocating memory.
Definition at line 2099 of file init.cpp.
◆ AppInitLockDataDirectory()
bool AppInitLockDataDirectory |
( |
| ) |
|
Lock bitcoin data directory.
- Note
- This should only be done after daemonization. Do not call Shutdown() if this function fails.
- Precondition
- Parameters should be parsed and config file should be read, AppInitSanityChecks should have been called.
Definition at line 2087 of file init.cpp.
◆ AppInitMain()
Bitcoin main initialization.
- Note
- This should only be done after daemonization.
- Precondition
- Parameters should be parsed and config file should be read, AppInitLockDataDirectory should have been called.
Register RPC commands regardless of -server setting so they will be available in the GUI RPC console even if external calls are disabled.
Start the RPC server. It will be started in "warmup" mode and not process calls yet (but it will verify that the server is there and will be ready later). Warmup mode will be completed when initialisation is finished.
Definition at line 2109 of file init.cpp.
◆ AppInitParameterInteraction()
Initialization: parameter interaction.
- Note
- This can be done before daemonization. Do not call Shutdown() if this function fails.
- Precondition
- Parameters should be parsed and config file should be read, AppInitBasicSetup should have been called.
Definition at line 1760 of file init.cpp.
◆ AppInitSanityChecks()
bool AppInitSanityChecks |
( |
| ) |
|
Initialization sanity checks: ecc init, sanity checks, dir lock.
- Note
- This can be done before daemonization. Do not call Shutdown() if this function fails.
- Precondition
- Parameters should be parsed and config file should be read, AppInitParameterInteraction should have been called.
Definition at line 2069 of file init.cpp.
◆ AppInitServers()
◆ BlockNotifyGenesisWait()
◆ CreatePidFile()
◆ GetPidFile()
◆ HandleSIGHUP()
◆ HandleSIGTERM()
Signal handlers are very limited in what they are allowed to do.
The execution context the handler is invoked in is not guaranteed, so we restrict handler operations to just touching variables:
Definition at line 387 of file init.cpp.
◆ InitLogging()
Initialize global loggers.
Initialize the logging infrastructure.
Note that this is called very early in the process lifetime, so you should be careful about what global state you rely on here.
Definition at line 1686 of file init.cpp.
◆ InitParameterInteraction()
Parameter interaction: change current parameters depending on various rules.
Definition at line 1552 of file init.cpp.
◆ Interrupt()
Interrupt threads.
Definition at line 201 of file init.cpp.
◆ LockDataDirectory()
◆ new_handler_terminate()
◆ OnRPCStarted()
◆ OnRPCStopped()
◆ registerSignalHandler()
◆ SetupServerArgs()
◆ Shutdown()
Note: Shutdown() must be able to handle cases in which initialization failed part of the way, for example if the data directory was found to be locked. Be sure that anything that writes files or flushes caches only does this if the respective module was initialized.
Definition at line 225 of file init.cpp.
◆ BITCOIN_PID_FILENAME
const char* BITCOIN_PID_FILENAME = "bitcoind.pid" |
|
static |
The PID file facilities.
Definition at line 154 of file init.cpp.
◆ DEFAULT_ASMAP_FILENAME
const char* DEFAULT_ASMAP_FILENAME = "ip_asn.map" |
|
static |
◆ DEFAULT_CHRONIK
◆ DEFAULT_PROXYRANDOMIZE
const bool DEFAULT_PROXYRANDOMIZE = true |
|
static |
◆ DEFAULT_REST_ENABLE
◆ fHaveGenesis
◆ g_genesis_wait_cv
◆ g_genesis_wait_mutex
◆ HEADERS_TIME_FILE_NAME
const std::string HEADERS_TIME_FILE_NAME {"headerstime.dat"} |
|
static |
◆ rpc_notify_block_change_connection