-
Notifications
You must be signed in to change notification settings - Fork 1.5k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Expose all amendments known by libxrpl #5026
Expose all amendments known by libxrpl #5026
Conversation
src/ripple/protocol/Feature.h
Outdated
enum class AmendmentSupport : int { Retired = -1, Supported = 0, Unsupported }; | ||
|
||
/** All amendments libxrpl knows about. */ | ||
std::unordered_map<std::string, AmendmentSupport> const& |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Note that i used unordered_map
here because for Clio's usecase the order is not important.
But i'm now thinking that perhaps there will be a usecase in the future where it could come in handy if the names came out sorted. What do you think?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
From a cost/benefit perspective, it's hard for me to imagine that the perf degradation of using a sorted map would be significant for amendments. It's O(log n) versus O(1) and n is small, maybe < 100, and certainly < 1000. So yes, I think it would be nice for the names to come out sorted.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Agreed. After sleeping on it I also think it's better to keep the API similar to what it was, so definitely changing this back to match.
Codecov ReportAll modified and coverable lines are covered by tests ✅
Additional details and impacted files@@ Coverage Diff @@
## develop #5026 +/- ##
=======================================
Coverage 71.3% 71.3%
=======================================
Files 796 796
Lines 66887 66900 +13
Branches 10867 10866 -1
=======================================
+ Hits 47690 47705 +15
+ Misses 19197 19195 -2
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Untested; LGTM
* upstream/develop: (32 commits) fixInnerObjTemplate2 amendment (XRPLF#5047) Set version to 2.3.0-b1 Ignore restructuring commits (XRPLF#4997) Recompute loops (XRPLF#4997) Rewrite includes (XRPLF#4997) Rearrange sources (XRPLF#4997) Move CMake directory (XRPLF#4997) Add bin/physical.sh (XRPLF#4997) Prepare to rearrange sources: (XRPLF#4997) Change order of checks in amm_info: (XRPLF#4924) Add the fixEnforceNFTokenTrustline amendment: (XRPLF#4946) Replaces the usage of boost::string_view with std::string_view (XRPLF#4509) docs: explain how to find a clang-format patch generated by CI (XRPLF#4521) XLS-52d: NFTokenMintOffer (XRPLF#4845) chore: remove repeat words (XRPLF#5041) Expose all amendments known by libxrpl (XRPLF#5026) fixReducedOffersV2: prevent offers from blocking order books: (XRPLF#5032) Additional unit tests for testing deletion of trust lines (XRPLF#4886) Fix conan typo: (XRPLF#5044) Add new command line option to make replaying transactions easier: (XRPLF#5027) ...
High Level Overview of Change
There is no way for consumers like Clio to get all known amendments/features thru
libxrpl
.This PR adds a public function to do just that as well as some tests for it.
Please note that this adds only what is needed for Clio and nothing more. If there is desire to expose the raw
VoteBehavior
it can be added. Let me know.Context of Change
Clio needs the ability to get all known amendments in order to implement the
feature
API (non-admin part).Type of Change
API Impact
None.