Chainparams: Use a regular factory for creating chainparams

This commit is contained in:
Jorge Timón
2015-05-22 03:50:01 +02:00
parent 35da2aeed7
commit f87f3626e3
6 changed files with 58 additions and 39 deletions

View File

@@ -35,7 +35,6 @@ public:
nRPCPort = 8332;
}
};
static CBaseMainParams mainParams;
/**
* Testnet (v3)
@@ -49,7 +48,6 @@ public:
strDataDir = "testnet3";
}
};
static CBaseTestNetParams testNetParams;
/*
* Regression test
@@ -63,31 +61,30 @@ public:
strDataDir = "regtest";
}
};
static CBaseRegTestParams regTestParams;
static CBaseChainParams* pCurrentBaseParams = 0;
static std::unique_ptr<CBaseChainParams> globalChainBaseParams;
const CBaseChainParams& BaseParams()
{
assert(pCurrentBaseParams);
return *pCurrentBaseParams;
assert(globalChainBaseParams);
return *globalChainBaseParams;
}
CBaseChainParams& BaseParams(const std::string& chain)
std::unique_ptr<CBaseChainParams> CreateBaseChainParams(const std::string& chain)
{
if (chain == CBaseChainParams::MAIN)
return mainParams;
return std::unique_ptr<CBaseChainParams>(new CBaseMainParams());
else if (chain == CBaseChainParams::TESTNET)
return testNetParams;
return std::unique_ptr<CBaseChainParams>(new CBaseTestNetParams());
else if (chain == CBaseChainParams::REGTEST)
return regTestParams;
return std::unique_ptr<CBaseChainParams>(new CBaseRegTestParams());
else
throw std::runtime_error(strprintf("%s: Unknown chain %s.", __func__, chain));
}
void SelectBaseParams(const std::string& chain)
{
pCurrentBaseParams = &BaseParams(chain);
globalChainBaseParams = CreateBaseChainParams(chain);
}
std::string ChainNameFromCommandLine()