Changeset View
Changeset View
Standalone View
Standalone View
src/init.cpp
Show First 20 Lines • Show All 42 Lines • ▼ Show 20 Lines | |||||
#include <shutdown.h> | #include <shutdown.h> | ||||
#include <timedata.h> | #include <timedata.h> | ||||
#include <torcontrol.h> | #include <torcontrol.h> | ||||
#include <txdb.h> | #include <txdb.h> | ||||
#include <txmempool.h> | #include <txmempool.h> | ||||
#include <ui_interface.h> | #include <ui_interface.h> | ||||
#include <util/moneystr.h> | #include <util/moneystr.h> | ||||
#include <util/system.h> | #include <util/system.h> | ||||
#include <util/threadnames.h> | |||||
#include <validation.h> | #include <validation.h> | ||||
#include <validationinterface.h> | #include <validationinterface.h> | ||||
#include <walletinitinterface.h> | #include <walletinitinterface.h> | ||||
#include <warnings.h> | #include <warnings.h> | ||||
#include <boost/algorithm/string/classification.hpp> | #include <boost/algorithm/string/classification.hpp> | ||||
#include <boost/algorithm/string/replace.hpp> | #include <boost/algorithm/string/replace.hpp> | ||||
#include <boost/algorithm/string/split.hpp> | #include <boost/algorithm/string/split.hpp> | ||||
▲ Show 20 Lines • Show All 115 Lines • ▼ Show 20 Lines | void Shutdown(InitInterfaces &interfaces) { | ||||
if (!lockShutdown) { | if (!lockShutdown) { | ||||
return; | return; | ||||
} | } | ||||
/// Note: Shutdown() must be able to handle cases in which initialization | /// 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 | /// 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 | /// be locked. Be sure that anything that writes files or flushes caches | ||||
/// only does this if the respective module was initialized. | /// only does this if the respective module was initialized. | ||||
RenameThread("bitcoin-shutoff"); | util::ThreadRename("shutoff"); | ||||
g_mempool.AddTransactionsUpdated(1); | g_mempool.AddTransactionsUpdated(1); | ||||
StopHTTPRPC(); | StopHTTPRPC(); | ||||
StopREST(); | StopREST(); | ||||
StopRPC(); | StopRPC(); | ||||
StopHTTPServer(); | StopHTTPServer(); | ||||
for (const auto &client : interfaces.chain_clients) { | for (const auto &client : interfaces.chain_clients) { | ||||
client->flush(); | client->flush(); | ||||
▲ Show 20 Lines • Show All 629 Lines • ▼ Show 20 Lines | #endif | ||||
gArgs.AddArg("-logips", | gArgs.AddArg("-logips", | ||||
strprintf("Include IP addresses in debug output (default: %d)", | strprintf("Include IP addresses in debug output (default: %d)", | ||||
DEFAULT_LOGIPS), | DEFAULT_LOGIPS), | ||||
false, OptionsCategory::DEBUG_TEST); | false, OptionsCategory::DEBUG_TEST); | ||||
gArgs.AddArg("-logtimestamps", | gArgs.AddArg("-logtimestamps", | ||||
strprintf("Prepend debug output with timestamp (default: %d)", | strprintf("Prepend debug output with timestamp (default: %d)", | ||||
DEFAULT_LOGTIMESTAMPS), | DEFAULT_LOGTIMESTAMPS), | ||||
false, OptionsCategory::DEBUG_TEST); | false, OptionsCategory::DEBUG_TEST); | ||||
gArgs.AddArg( | |||||
"-logthreadnames", | |||||
strprintf( | |||||
"Prepend debug output with name of the originating thread (only " | |||||
"available on platforms supporting thread_local) (default: %u)", | |||||
DEFAULT_LOGTHREADNAMES), | |||||
false, OptionsCategory::DEBUG_TEST); | |||||
gArgs.AddArg( | gArgs.AddArg( | ||||
"-logtimemicros", | "-logtimemicros", | ||||
strprintf("Add microsecond precision to debug timestamps (default: %d)", | strprintf("Add microsecond precision to debug timestamps (default: %d)", | ||||
DEFAULT_LOGTIMEMICROS), | DEFAULT_LOGTIMEMICROS), | ||||
true, OptionsCategory::DEBUG_TEST); | true, OptionsCategory::DEBUG_TEST); | ||||
gArgs.AddArg( | gArgs.AddArg( | ||||
"-mocktime=<n>", | "-mocktime=<n>", | ||||
"Replace actual time with <n> seconds since epoch (default: 0)", true, | "Replace actual time with <n> seconds since epoch (default: 0)", true, | ||||
▲ Show 20 Lines • Show All 295 Lines • ▼ Show 20 Lines | for (const auto &item : mapBlockFiles) { | ||||
continue; | continue; | ||||
} | } | ||||
remove(item.second); | remove(item.second); | ||||
} | } | ||||
} | } | ||||
static void ThreadImport(const Config &config, | static void ThreadImport(const Config &config, | ||||
std::vector<fs::path> vImportFiles) { | std::vector<fs::path> vImportFiles) { | ||||
RenameThread("bitcoin-loadblk"); | util::ThreadRename("loadblk"); | ||||
ScheduleBatchPriority(); | ScheduleBatchPriority(); | ||||
{ | { | ||||
CImportingNow imp; | CImportingNow imp; | ||||
// -reindex | // -reindex | ||||
if (fReindex) { | if (fReindex) { | ||||
int nFile = 0; | int nFile = 0; | ||||
▲ Show 20 Lines • Show All 249 Lines • ▼ Show 20 Lines | void InitLogging() { | ||||
LogPrintf("\n\n\n\n\n"); | LogPrintf("\n\n\n\n\n"); | ||||
LogInstance().m_print_to_console = gArgs.GetBoolArg( | LogInstance().m_print_to_console = gArgs.GetBoolArg( | ||||
"-printtoconsole", !gArgs.GetBoolArg("-daemon", false)); | "-printtoconsole", !gArgs.GetBoolArg("-daemon", false)); | ||||
LogInstance().m_log_timestamps = | LogInstance().m_log_timestamps = | ||||
gArgs.GetBoolArg("-logtimestamps", DEFAULT_LOGTIMESTAMPS); | gArgs.GetBoolArg("-logtimestamps", DEFAULT_LOGTIMESTAMPS); | ||||
LogInstance().m_log_time_micros = | LogInstance().m_log_time_micros = | ||||
gArgs.GetBoolArg("-logtimemicros", DEFAULT_LOGTIMEMICROS); | gArgs.GetBoolArg("-logtimemicros", DEFAULT_LOGTIMEMICROS); | ||||
LogInstance().m_log_threadnames = | |||||
gArgs.GetBoolArg("-logthreadnames", DEFAULT_LOGTHREADNAMES); | |||||
fLogIPs = gArgs.GetBoolArg("-logips", DEFAULT_LOGIPS); | fLogIPs = gArgs.GetBoolArg("-logips", DEFAULT_LOGIPS); | ||||
std::string version_string = FormatFullVersion(); | std::string version_string = FormatFullVersion(); | ||||
#ifdef DEBUG | #ifdef DEBUG | ||||
version_string += " (debug build)"; | version_string += " (debug build)"; | ||||
#else | #else | ||||
version_string += " (release build)"; | version_string += " (release build)"; | ||||
▲ Show 20 Lines • Show All 494 Lines • ▼ Show 20 Lines | #endif | ||||
InitSignatureCache(); | InitSignatureCache(); | ||||
InitScriptExecutionCache(); | InitScriptExecutionCache(); | ||||
LogPrintf("Using %u threads for script verification\n", | LogPrintf("Using %u threads for script verification\n", | ||||
nScriptCheckThreads); | nScriptCheckThreads); | ||||
if (nScriptCheckThreads) { | if (nScriptCheckThreads) { | ||||
for (int i = 0; i < nScriptCheckThreads - 1; i++) { | for (int i = 0; i < nScriptCheckThreads - 1; i++) { | ||||
threadGroup.create_thread(&ThreadScriptCheck); | threadGroup.create_thread([i]() { return ThreadScriptCheck(i); }); | ||||
} | } | ||||
} | } | ||||
// Start the lightweight task scheduler thread | // Start the lightweight task scheduler thread | ||||
CScheduler::Function serviceLoop = | CScheduler::Function serviceLoop = | ||||
std::bind(&CScheduler::serviceQueue, &scheduler); | std::bind(&CScheduler::serviceQueue, &scheduler); | ||||
threadGroup.create_thread(std::bind(&TraceThread<CScheduler::Function>, | threadGroup.create_thread(std::bind(&TraceThread<CScheduler::Function>, | ||||
"scheduler", serviceLoop)); | "scheduler", serviceLoop)); | ||||
▲ Show 20 Lines • Show All 614 Lines • Show Last 20 Lines |