From fad4fa7e2fb95b7ced9007060ebfd0e8f181f5d8 Mon Sep 17 00:00:00 2001 From: MarcoFalke Date: Wed, 8 Apr 2020 19:47:56 -0400 Subject: node: Add args alias for gArgs global --- src/bitcoind.cpp | 2 +- src/init.cpp | 6 +++++- src/init.h | 4 ++-- src/interfaces/node.cpp | 2 +- src/node/context.h | 2 ++ src/test/util/setup_common.cpp | 1 + src/test/util/setup_common.h | 3 ++- 7 files changed, 14 insertions(+), 6 deletions(-) diff --git a/src/bitcoind.cpp b/src/bitcoind.cpp index f26eb45fce..bf444dd0bc 100644 --- a/src/bitcoind.cpp +++ b/src/bitcoind.cpp @@ -53,7 +53,7 @@ static bool AppInit(int argc, char* argv[]) // Parameters // // If Qt is used, parameters/bitcoin.conf are parsed in qt/bitcoin.cpp's main() - SetupServerArgs(); + SetupServerArgs(node); std::string error; if (!gArgs.ParseParameters(argc, argv, error)) { return InitError(strprintf("Error parsing command line arguments: %s\n", error)); diff --git a/src/init.cpp b/src/init.cpp index de2db694fd..de32c0ad71 100644 --- a/src/init.cpp +++ b/src/init.cpp @@ -297,6 +297,7 @@ void Shutdown(NodeContext& node) GetMainSignals().UnregisterBackgroundSignalScheduler(); globalVerifyHandle.reset(); ECC_Stop(); + node.args = nullptr; if (node.mempool) node.mempool = nullptr; node.scheduler.reset(); @@ -360,8 +361,11 @@ static void OnRPCStopped() LogPrint(BCLog::RPC, "RPC stopped.\n"); } -void SetupServerArgs() +void SetupServerArgs(NodeContext& node) { + assert(!node.args); + node.args = &gArgs; + SetupHelpOptions(gArgs); gArgs.AddArg("-help-debug", "Print help message with debugging options and exit", ArgsManager::ALLOW_ANY, OptionsCategory::DEBUG_TEST); // server-only for now diff --git a/src/init.h b/src/init.h index f74ae5a47a..0c44035b00 100644 --- a/src/init.h +++ b/src/init.h @@ -54,9 +54,9 @@ bool AppInitLockDataDirectory(); bool AppInitMain(NodeContext& node); /** - * Setup the arguments for gArgs + * Register all arguments with the ArgsManager */ -void SetupServerArgs(); +void SetupServerArgs(NodeContext& node); /** Returns licensing information (for -version) */ std::string LicenseInfo(); diff --git a/src/interfaces/node.cpp b/src/interfaces/node.cpp index 6e5fdc61b5..5ebbd61584 100644 --- a/src/interfaces/node.cpp +++ b/src/interfaces/node.cpp @@ -97,7 +97,7 @@ public: StopMapPort(); } } - void setupServerArgs() override { return SetupServerArgs(); } + void setupServerArgs() override { return SetupServerArgs(m_context); } bool getProxy(Network net, proxyType& proxy_info) override { return GetProxy(net, proxy_info); } size_t getNodeCount(CConnman::NumConnections flags) override { diff --git a/src/node/context.h b/src/node/context.h index 1c592b456b..7b6dd37361 100644 --- a/src/node/context.h +++ b/src/node/context.h @@ -8,6 +8,7 @@ #include #include +class ArgsManager; class BanMan; class CConnman; class CScheduler; @@ -33,6 +34,7 @@ struct NodeContext { CTxMemPool* mempool{nullptr}; // Currently a raw pointer because the memory is not managed by this struct std::unique_ptr peer_logic; std::unique_ptr banman; + ArgsManager* args{nullptr}; // Currently a raw pointer because the memory is not managed by this struct std::unique_ptr chain; std::vector> chain_clients; std::unique_ptr scheduler; diff --git a/src/test/util/setup_common.cpp b/src/test/util/setup_common.cpp index 32d50e49b9..b49e2a56d0 100644 --- a/src/test/util/setup_common.cpp +++ b/src/test/util/setup_common.cpp @@ -159,6 +159,7 @@ TestingSetup::~TestingSetup() g_rpc_node = nullptr; m_node.connman.reset(); m_node.banman.reset(); + m_node.args = nullptr; m_node.mempool = nullptr; m_node.scheduler.reset(); UnloadBlockIndex(); diff --git a/src/test/util/setup_common.h b/src/test/util/setup_common.h index 0930309c3a..41547c8b3a 100644 --- a/src/test/util/setup_common.h +++ b/src/test/util/setup_common.h @@ -73,9 +73,11 @@ static constexpr CAmount CENT{1000000}; */ struct BasicTestingSetup { ECCVerifyHandle globalVerifyHandle; + NodeContext m_node; explicit BasicTestingSetup(const std::string& chainName = CBaseChainParams::MAIN); ~BasicTestingSetup(); + private: const fs::path m_path_root; }; @@ -84,7 +86,6 @@ private: * Included are coins database, script check threads setup. */ struct TestingSetup : public BasicTestingSetup { - NodeContext m_node; boost::thread_group threadGroup; explicit TestingSetup(const std::string& chainName = CBaseChainParams::MAIN); -- cgit v1.2.3