From f297479a1995bd147c21c58fca103cd3ab3e54c1 Mon Sep 17 00:00:00 2001 From: jtimon Date: Mon, 1 Sep 2014 00:01:54 +0200 Subject: Reserve only one network specific cached path per session --- src/util.cpp | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) diff --git a/src/util.cpp b/src/util.cpp index 0ac0f70a79..7bb65f6584 100644 --- a/src/util.cpp +++ b/src/util.cpp @@ -395,7 +395,7 @@ boost::filesystem::path GetDefaultDataDir() #endif } -static boost::filesystem::path pathCached[CBaseChainParams::MAX_NETWORK_TYPES+1]; +static boost::filesystem::path pathCached[2]; static CCriticalSection csPathCached; const boost::filesystem::path &GetDataDir(bool fNetSpecific) @@ -404,10 +404,7 @@ const boost::filesystem::path &GetDataDir(bool fNetSpecific) LOCK(csPathCached); - int nNet = CBaseChainParams::MAX_NETWORK_TYPES; - if (fNetSpecific) nNet = BaseParams().NetworkID(); - - fs::path &path = pathCached[nNet]; + fs::path &path = pathCached[fNetSpecific ? 1 : 0]; // This can be called during exceptions by LogPrintf(), so we cache the // value so we don't have to do memory allocations after that. @@ -433,8 +430,7 @@ const boost::filesystem::path &GetDataDir(bool fNetSpecific) void ClearDatadirCache() { - std::fill(&pathCached[0], &pathCached[CBaseChainParams::MAX_NETWORK_TYPES+1], - boost::filesystem::path()); + std::fill(&pathCached[0], &pathCached[2], boost::filesystem::path()); } boost::filesystem::path GetConfigFile() -- cgit v1.2.3 From 3fdb9e8c159a2bc3ac853b469dae9ba0ecf739f3 Mon Sep 17 00:00:00 2001 From: jtimon Date: Mon, 1 Sep 2014 00:41:28 +0200 Subject: Remove CBaseChainParams::NetworkID() --- src/chainparams.cpp | 9 ++++++--- src/chainparamsbase.cpp | 25 +++++++++++++++---------- src/chainparamsbase.h | 8 ++++++-- 3 files changed, 27 insertions(+), 15 deletions(-) diff --git a/src/chainparams.cpp b/src/chainparams.cpp index 179db5a818..f561877d9f 100644 --- a/src/chainparams.cpp +++ b/src/chainparams.cpp @@ -240,10 +240,13 @@ void SelectParams(CBaseChainParams::Network network) { pCurrentParams = &Params(network); } -bool SelectParamsFromCommandLine() { - if (!SelectBaseParamsFromCommandLine()) +bool SelectParamsFromCommandLine() +{ + CBaseChainParams::Network network = CBaseChainParams::NetworkIdFromCommandLine(); + if (network == CBaseChainParams::MAX_NETWORK_TYPES) return false; - SelectParams(BaseParams().NetworkID()); + SelectBaseParams(network); + SelectParams(network); return true; } diff --git a/src/chainparamsbase.cpp b/src/chainparamsbase.cpp index 98bb5b855f..05ef5dd463 100644 --- a/src/chainparamsbase.cpp +++ b/src/chainparamsbase.cpp @@ -83,22 +83,27 @@ void SelectBaseParams(CBaseChainParams::Network network) } } -bool SelectBaseParamsFromCommandLine() +CBaseChainParams::Network CBaseChainParams::NetworkIdFromCommandLine() { bool fRegTest = GetBoolArg("-regtest", false); bool fTestNet = GetBoolArg("-testnet", false); - if (fTestNet && fRegTest) { + if (fTestNet && fRegTest) + return MAX_NETWORK_TYPES; + if (fRegTest) + return REGTEST; + if (fTestNet) + return TESTNET; + return MAIN; +} + +bool SelectBaseParamsFromCommandLine() +{ + CBaseChainParams::Network network = CBaseChainParams::NetworkIdFromCommandLine(); + if (network == CBaseChainParams::MAX_NETWORK_TYPES) return false; - } - if (fRegTest) { - SelectBaseParams(CBaseChainParams::REGTEST); - } else if (fTestNet) { - SelectBaseParams(CBaseChainParams::TESTNET); - } else { - SelectBaseParams(CBaseChainParams::MAIN); - } + SelectBaseParams(network); return true; } diff --git a/src/chainparamsbase.h b/src/chainparamsbase.h index c054f03f17..f24337cef0 100644 --- a/src/chainparamsbase.h +++ b/src/chainparamsbase.h @@ -25,8 +25,12 @@ public: const std::string& DataDir() const { return strDataDir; } int RPCPort() const { return nRPCPort; } - Network NetworkID() const { return networkID; } + /** + * Looks for -regtest or -testnet and returns the appropriate Network ID. + * Returns MAX_NETWORK_TYPES if an invalid combination is given. + */ + static Network NetworkIdFromCommandLine(); protected: CBaseChainParams() {} @@ -45,7 +49,7 @@ const CBaseChainParams& BaseParams(); void SelectBaseParams(CBaseChainParams::Network network); /** - * Looks for -regtest or -testnet and then calls SelectParams as appropriate. + * Calls CBaseChainParams::NetworkIdFromCommandLine() and then calls SelectParams as appropriate. * Returns false if an invalid combination is given. */ bool SelectBaseParamsFromCommandLine(); -- cgit v1.2.3 From b796cb084bd3865d094d86da2f33cd5c68294a43 Mon Sep 17 00:00:00 2001 From: jtimon Date: Thu, 9 Oct 2014 19:15:38 +0200 Subject: SQUASHME: NetworkIdFromCommandLine() function instead of method --- src/chainparams.cpp | 2 +- src/chainparamsbase.cpp | 12 ++++++------ src/chainparamsbase.h | 13 +++++++------ 3 files changed, 14 insertions(+), 13 deletions(-) diff --git a/src/chainparams.cpp b/src/chainparams.cpp index f561877d9f..ec05f592b9 100644 --- a/src/chainparams.cpp +++ b/src/chainparams.cpp @@ -242,7 +242,7 @@ void SelectParams(CBaseChainParams::Network network) { bool SelectParamsFromCommandLine() { - CBaseChainParams::Network network = CBaseChainParams::NetworkIdFromCommandLine(); + CBaseChainParams::Network network = NetworkIdFromCommandLine(); if (network == CBaseChainParams::MAX_NETWORK_TYPES) return false; diff --git a/src/chainparamsbase.cpp b/src/chainparamsbase.cpp index 05ef5dd463..f275bd544f 100644 --- a/src/chainparamsbase.cpp +++ b/src/chainparamsbase.cpp @@ -83,23 +83,23 @@ void SelectBaseParams(CBaseChainParams::Network network) } } -CBaseChainParams::Network CBaseChainParams::NetworkIdFromCommandLine() +CBaseChainParams::Network NetworkIdFromCommandLine() { bool fRegTest = GetBoolArg("-regtest", false); bool fTestNet = GetBoolArg("-testnet", false); if (fTestNet && fRegTest) - return MAX_NETWORK_TYPES; + return CBaseChainParams::MAX_NETWORK_TYPES; if (fRegTest) - return REGTEST; + return CBaseChainParams::REGTEST; if (fTestNet) - return TESTNET; - return MAIN; + return CBaseChainParams::TESTNET; + return CBaseChainParams::MAIN; } bool SelectBaseParamsFromCommandLine() { - CBaseChainParams::Network network = CBaseChainParams::NetworkIdFromCommandLine(); + CBaseChainParams::Network network = NetworkIdFromCommandLine(); if (network == CBaseChainParams::MAX_NETWORK_TYPES) return false; diff --git a/src/chainparamsbase.h b/src/chainparamsbase.h index f24337cef0..ff3e811988 100644 --- a/src/chainparamsbase.h +++ b/src/chainparamsbase.h @@ -26,11 +26,6 @@ public: const std::string& DataDir() const { return strDataDir; } int RPCPort() const { return nRPCPort; } - /** - * Looks for -regtest or -testnet and returns the appropriate Network ID. - * Returns MAX_NETWORK_TYPES if an invalid combination is given. - */ - static Network NetworkIdFromCommandLine(); protected: CBaseChainParams() {} @@ -49,7 +44,13 @@ const CBaseChainParams& BaseParams(); void SelectBaseParams(CBaseChainParams::Network network); /** - * Calls CBaseChainParams::NetworkIdFromCommandLine() and then calls SelectParams as appropriate. + * Looks for -regtest or -testnet and returns the appropriate Network ID. + * Returns MAX_NETWORK_TYPES if an invalid combination is given. + */ +CBaseChainParams::Network NetworkIdFromCommandLine(); + +/** + * Calls NetworkIdFromCommandLine() and then calls SelectParams as appropriate. * Returns false if an invalid combination is given. */ bool SelectBaseParamsFromCommandLine(); -- cgit v1.2.3 From ebdb9ff63992fe685688f6d47cd1f3a2938ee607 Mon Sep 17 00:00:00 2001 From: jtimon Date: Sat, 11 Oct 2014 20:56:27 +0200 Subject: SQUASHME: fix "Reserve only one network specific cached path per session" --- src/util.cpp | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/util.cpp b/src/util.cpp index 7bb65f6584..ae7767a1f5 100644 --- a/src/util.cpp +++ b/src/util.cpp @@ -395,7 +395,8 @@ boost::filesystem::path GetDefaultDataDir() #endif } -static boost::filesystem::path pathCached[2]; +static boost::filesystem::path pathCached; +static boost::filesystem::path pathCachedNetSpecific; static CCriticalSection csPathCached; const boost::filesystem::path &GetDataDir(bool fNetSpecific) @@ -404,7 +405,7 @@ const boost::filesystem::path &GetDataDir(bool fNetSpecific) LOCK(csPathCached); - fs::path &path = pathCached[fNetSpecific ? 1 : 0]; + fs::path &path = fNetSpecific ? pathCachedNetSpecific : pathCached; // This can be called during exceptions by LogPrintf(), so we cache the // value so we don't have to do memory allocations after that. @@ -430,7 +431,8 @@ const boost::filesystem::path &GetDataDir(bool fNetSpecific) void ClearDatadirCache() { - std::fill(&pathCached[0], &pathCached[2], boost::filesystem::path()); + pathCached = boost::filesystem::path(); + pathCachedNetSpecific = boost::filesystem::path(); } boost::filesystem::path GetConfigFile() -- cgit v1.2.3 From ca3ce0fa037a94f2c357ad04d42e5f526cbcb78e Mon Sep 17 00:00:00 2001 From: jtimon Date: Thu, 16 Oct 2014 22:49:33 +0200 Subject: squashme on 3fdb9e8c (Bluematt's bikeshedding) --- src/chainparams.cpp | 2 +- src/chainparamsbase.cpp | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/chainparams.cpp b/src/chainparams.cpp index ec05f592b9..3177266069 100644 --- a/src/chainparams.cpp +++ b/src/chainparams.cpp @@ -240,7 +240,7 @@ void SelectParams(CBaseChainParams::Network network) { pCurrentParams = &Params(network); } -bool SelectParamsFromCommandLine() +bool SelectParamsFromCommandLine() { CBaseChainParams::Network network = NetworkIdFromCommandLine(); if (network == CBaseChainParams::MAX_NETWORK_TYPES) diff --git a/src/chainparamsbase.cpp b/src/chainparamsbase.cpp index f275bd544f..a602d8e30e 100644 --- a/src/chainparamsbase.cpp +++ b/src/chainparamsbase.cpp @@ -97,7 +97,7 @@ CBaseChainParams::Network NetworkIdFromCommandLine() return CBaseChainParams::MAIN; } -bool SelectBaseParamsFromCommandLine() +bool SelectBaseParamsFromCommandLine() { CBaseChainParams::Network network = NetworkIdFromCommandLine(); if (network == CBaseChainParams::MAX_NETWORK_TYPES) -- cgit v1.2.3