Amendment RPC enhancements:

* RPC command to veto/unveto
* Store votes
* Add vote information to JSON
* Add ledger majority information to JSON
* Config section for vetos
This commit is contained in:
Nik Bougalis
2015-11-03 17:31:18 -08:00
parent c9486863c3
commit f13668371e
18 changed files with 1120 additions and 1148 deletions

View File

@@ -469,16 +469,19 @@ cdirNext (ReadView const& view,
return true;
}
enabledAmendments_t
std::set <uint256>
getEnabledAmendments (ReadView const& view)
{
enabledAmendments_t amendments;
auto const sleAmendments = view.read(keylet::amendments());
std::set<uint256> amendments;
if (sleAmendments)
if (auto const sle = view.read(keylet::amendments()))
{
for (auto const &a : sleAmendments->getFieldV256 (sfAmendments))
amendments.insert (a);
if (!sle->isFieldPresent (sfAmendments))
LogicError ("No amendments field is present");
auto const& v = sle->getFieldV256 (sfAmendments);
amendments.insert (v.begin(), v.end());
}
return amendments;
@@ -487,20 +490,24 @@ getEnabledAmendments (ReadView const& view)
majorityAmendments_t
getMajorityAmendments (ReadView const& view)
{
using tp = NetClock::time_point;
using d = tp::duration;
majorityAmendments_t majorities;
auto const sleAmendments = view.read(keylet::amendments());
majorityAmendments_t ret;
if (sleAmendments && sleAmendments->isFieldPresent (sfMajorities))
if (auto const sle = view.read(keylet::amendments()))
{
auto const& majArray = sleAmendments->getFieldArray (sfMajorities);
for (auto const& m : majArray)
majorities[m.getFieldH256 (sfAmendment)] =
tp(d(m.getFieldU32(sfCloseTime)));
if (sle->isFieldPresent (sfMajorities))
{
using tp = NetClock::time_point;
using d = tp::duration;
auto const majorities = sle->getFieldArray (sfMajorities);
for (auto const& m : majorities)
ret[m.getFieldH256 (sfAmendment)] =
tp(d(m.getFieldU32(sfCloseTime)));
}
}
return majorities;
return ret;
}
boost::optional<uint256>