mirror of
https://github.com/XRPLF/rippled.git
synced 2025-12-06 17:27:55 +00:00
Refactor Feature name management and creation:
* Only require adding the new feature names in one place. (Also need to increment a counter, but a check on startup will catch that.) * Allows rippled to have the code to support a given amendment, but not vote for it by default. This allows the amendment to be enabled in a future version without necessarily amendment blocking these older versions. * The default vote is carried with the amendment name in the list of supported amendments. * The amendment table is constructed with the amendment and default vote.
This commit is contained in:
committed by
manojsdoshi
parent
1ca8898703
commit
4a9bd7ed6d
@@ -1250,27 +1250,29 @@ ApplicationImp::setup()
|
||||
|
||||
// Configure the amendments the server supports
|
||||
{
|
||||
auto const& sa = detail::supportedAmendments();
|
||||
std::vector<std::string> saHashes;
|
||||
saHashes.reserve(sa.size());
|
||||
for (auto const& name : sa)
|
||||
{
|
||||
auto const f = getRegisteredFeature(name);
|
||||
BOOST_ASSERT(f);
|
||||
if (f)
|
||||
saHashes.push_back(to_string(*f) + " " + name);
|
||||
}
|
||||
Section supportedAmendments("Supported Amendments");
|
||||
supportedAmendments.append(saHashes);
|
||||
auto const supported = []() {
|
||||
auto const& amendments = detail::supportedAmendments();
|
||||
std::vector<AmendmentTable::FeatureInfo> supported;
|
||||
supported.reserve(amendments.size());
|
||||
for (auto const& [a, vote] : amendments)
|
||||
{
|
||||
auto const f = ripple::getRegisteredFeature(a);
|
||||
assert(f);
|
||||
if (f)
|
||||
supported.emplace_back(a, *f, vote);
|
||||
}
|
||||
return supported;
|
||||
}();
|
||||
Section const& downVoted = config_->section(SECTION_VETO_AMENDMENTS);
|
||||
|
||||
Section enabledAmendments = config_->section(SECTION_AMENDMENTS);
|
||||
Section const& upVoted = config_->section(SECTION_AMENDMENTS);
|
||||
|
||||
m_amendmentTable = make_AmendmentTable(
|
||||
*this,
|
||||
config().AMENDMENT_MAJORITY_TIME,
|
||||
supportedAmendments,
|
||||
enabledAmendments,
|
||||
config_->section(SECTION_VETO_AMENDMENTS),
|
||||
supported,
|
||||
upVoted,
|
||||
downVoted,
|
||||
logs_->journal("Amendments"));
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user